我有一个简单的(现在)搜索功能在我的网站上,用户可以输入一个字符串,然后得到返回的结果,如果文章标题包含任何的话,在搜索字符串。我的问题是如何处理当用户搜索的话,可以换句话说,那么结果应该只包含特定的话。让我用一个例子来解释:
用户搜索字符串:
"Hi everyone"
一些帖子标题:
"Title1 hi"
"Title2 hint"
在这种情况下,我希望搜索结果只找到第一个帖子,因为它包含“hi”,而不是第二个帖子,因为它只在“hint”中包含hi。当标题看起来像这样时,也会出现问题:
"Title3 hi, more text"
这也应该是用户搜索的结果,因为单词hi是单独的(但是在单词的前面或后面带有逗号、点或其他符号)。
现在我有一个PHP中的基本查询,它为每个单词添加以下内容:
AND (posts.post_title LIKE '%".$data->searchString."%')
这当然会包括上面的所有帖子,我想过这样做来包括大多数情况:
AND (posts.post_title LIKE '% ".$data->searchString." %' OR
posts.post_title LIKE '%,".$data->searchString." %' OR
posts.post_title LIKE '% ".$data->searchString.",%')
但我猜这将是非常沉重的大量搜索词。
如何编写一个高效的查询,以便从上面的说明中获得所需的结果?
1条答案
按热度按时间vmpqdwk31#
我找到了一个使用REGEXP的解决方案:
这将删除搜索词前面或后面的所有非字母数字值。