在术语不起作用时使用MYSQL搜索的最佳方法是什么



在数据库中搜索诸如"杏仁茴香饼干"之类的短语并返回结果的最佳方法是什么?

如果我

SELECT * 
FROM recipes 
WHERE name LIKE '%".$query."%'

并使用短语"杏仁饼干",不会按预期返回任何内容。 但是如果我搜索"茴香饼干",就会返回上面的结果。

我也试过

SELECT * 
FROM recipes 
WHERE name LIKE '%".$query."%' 
OR name LIKE '".$query."%' 
OR name LIKE '%".$query."' 

具有相同的失败结果。

使用MATCH AGAINST返回包含"杏仁"的所有内容以及包含"Cookie"的所有内容也不是一个好结果。 返回的结果中是否有快乐的中间值?

您可以尝试使用REPLACE.这样的事情应该有效:

SELECT * 
FROM recipes 
WHERE NAME LIKE REPLACE(' ".$query." ',' ','%');

请注意,我特意在.$query.之间添加空格,以确保替换操作将使您的术语充满通配符。在上面的示例中:

如果$query='杏仁饼干',那么REPLACE(' ".$query." ',' ','%')将变成%almond%cookies%

你可以在这里测试小提琴:https://www.db-fiddle.com/f/kMzp99S8ENbTkYcW5FVdYN/0

最新更新