仅使用正确的单词进行全文搜索

时间:2014-09-24 13:17:49

标签: php mysql full-text-search

我使用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作为结果。这不应该发生。 我希望它只在你输入ex时显示结果。 lanalana del rey born等等。

任何想法。

2 个答案:

答案 0 :(得分:3)

您可以将查询转换为布尔全文搜索。这是通过在搜索查询中的每个单词前添加+或 - 来完成的。

在这种情况下,我们添加一个+,因为它代表一个AND而一个 - 代表一个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)";

答案 1 :(得分:0)

您需要更正您的查询:

$query = "select * from `music` where `title` LIKE '%$search_value%'  
          OR `artist` LIKE '%$search_value%'";

我希望这对你有帮助。