我的代码中有以下sql查询:
SELECT ANSWER FROM FAQ WHERE (ANSWER LIKE '%".$searchKey."%')其中,答案可能包含html &样式标记,这使得上面的查询在纯文本匹配的情况下不会检索任何内容。我使用的是Symfony 1.1,上面的查询位于faq.php文件中。
所以,有人能建议我如何克服这个问题吗?
发布于 2012-07-24 10:51:50
我本来是说:
"SELECT `answer` FROM `faq` WHERE (`answer` LIKE '%".strip_tags($searchKey)."%'")但是现在,这是由于评论而添加的内容。
那为什么不这样做呢?
$query = mysql_query("SELECT `answer` FROM `faq` WHERE (`answer` LIKE '%$searchKey%'");
while ($result = mysql_fetch_object($query)) {
$newStrippedItem = strip_tags($result->columnItemName);
}发布于 2012-07-24 13:22:47
您需要做的是使用PHP函数htmlentities(answer)。它将以纯文本形式显示HTML标记。
希望能帮上忙
布拉姆
发布于 2012-07-24 13:32:12
货架上没有这样的功能。虽然可以编写,但编写一个“简化”的答案版本并对其运行全文匹配会更有表现力。毕竟,搜索将在由mysql_strip_tag函数生成或存储在ANSWER_SIMPLE列中的条带_tag‘’ed版本的答案上进行,逻辑是相同的。
在搜索时,您可以使用带条标签、删除噪声词和小写SearchQuery,然后在ANSWER_SIMPLE中查找您的SimplifiedSearchQuery。您还可以使用其他技巧,例如在存储和搜索之前将所有单词转换为Soundex格式(可选吗?)“相似之处”。
另一种可能是将SearchQuery块成单个单词并分别搜索它们。因此,如果由于有“但{em}I{/em}是您的{em}Queen{/em}!”(其中找不到SearchQuery“您的皇后”),则可以搜索的匹配项,即“/em”和"Queen“。这将导致误报,但允许您使用当前的数据库而不求助于剥离的辅助列或表。
https://stackoverflow.com/questions/11629188
复制相似问题