wordpress 通过MySQL查询查找文章标题中包含单词的文章

iezvtpos  于 2023-03-07  发布在  WordPress
关注(0)|答案(1)|浏览(199)

我有一个简单的(现在)搜索功能在我的网站上,用户可以输入一个字符串,然后得到返回的结果,如果文章标题包含任何的话,在搜索字符串。我的问题是如何处理当用户搜索的话,可以换句话说,那么结果应该只包含特定的话。让我用一个例子来解释:
用户搜索字符串:

"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.",%')

但我猜这将是非常沉重的大量搜索词。

如何编写一个高效的查询,以便从上面的说明中获得所需的结果?

vmpqdwk3

vmpqdwk31#

我找到了一个使用REGEXP的解决方案:

... posts.post_title REGEXP '\\b[^a-zA-Z0-9]*searchWord[^a-zA-Z0-9]*([^a-zA-Z0-9]|$)';

这将删除搜索词前面或后面的所有非字母数字值。

相关问题