我正在使用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
等时显示结果。
任何想法。
您可以将查询转换为布尔全文搜索。这是通过在搜索查询中的每个单词前面添加+或-来完成的。
在这种情况下,我们添加一个+,因为它代表AND,而a-代表NOT。
因此,如果你想让每个单词都成为必需的,你可以添加以下代码:
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)";
您需要更正您的查询:
$query = "select * from `music` where `title` LIKE '%$search_value%'
OR `artist` LIKE '%$search_value%'";
我希望这对你有帮助。