我正在使用full-text-search编写搜索函数,我希望只有当输入的单词包含在表中时,才能显示结果。
$search_value = $db->mysqli->real_escape_string("lana born to die sdkjfhsdkjfhdsjkfhdsjkfhd");
$query = "select * from `music` where match(`title`, `artist`) against ('$search_value')";artist title
----------------------------------
lana del rey west coast
lana del rey born to die
lana del rey summertime sadness
lana del rey blue jeans为了前夫。如果我搜索:lana born to die sdkjfhsdkjfhdsjkfhdsjkfhd,结果会显示lana del rey born to die。这种情况不应该发生。我想要它显示结果,只有当你键入前。lana,lana del rey born等。
任何想法。
发布于 2014-09-24 13:26:24
您可以将查询转换为布尔全文搜索。这是通过在搜索查询中的每个单词前面添加一个+或-来完成的。
在这种情况下,我们将a+加为a,而a-则表示非。
因此,如果希望使每个单词都成为必需的,则可以添加以下代码:
PHP:
$search_value = $db->mysqli->real_escape_string("lana born to die sdkjfhsdkjfhdsjkfhdsjkfhd");
$search_value = str_replace(" ", " +", $search_value);
$query = "select * from `music` where match(`title`, `artist`) against ('$search_value' IN BOOLEAN MODE)";发布于 2014-09-24 13:28:04
您需要更正您的查询:
$query = "select * from `music` where `title` LIKE '%$search_value%'
OR `artist` LIKE '%$search_value%'";我希望这会对你有帮助。
https://stackoverflow.com/questions/26017973
复制相似问题