MySQL全文搜索找不到完全匹配

时间:2014-02-21 07:56:15

标签: php mysql

我在互联网上找不到答案,可能是因为我不知道要搜索的正确术语/行话。

我正在使用自己的搜索功能从我的表中获取行。 我有三行带有此输入的列(没有引号):

"食"
"食べる"
"食糧"

现在,当我搜索“”时,我希望查询返回所有这三个结果。但我只得到第一个“”,我的查询中返回的完全匹配。我如何抓住所有这些?

我的查询:

  $sw = '食';
  $query = 'SELECT *, MATCH(word) AGAINST("'.$sw.'") as score FROM wordlist WHERE MATCH(word) AGAINST("'.$sw.'") ORDER BY score DESC;';

我感谢所有人的帮助。

编辑:添加%不起作用,例如“%'。$ sw。'%”。到目前为止,答案都没有。 :/

4 个答案:

答案 0 :(得分:1)

使用LIKE

 $sw = '食';
 $query = '
         SELECT *, MATCH(word) AGAINST("'.$sw.'") as score 
         FROM wordlist 
         WHERE work LIKE "'.$sw.'%" 
         ORDER BY score DESC';

答案 1 :(得分:0)

你能用吗,

'SELECT *, MATCH(word) AGAINST("'.$sw.'") as score FROM wordlist WHERE MATCH(word) LIKE '%'.$sw.'%'  ORDER BY score DESC;'

而不是您自己的查询

答案 2 :(得分:0)

试试这个:

$sw = '食';
$query = 'SELECT *, MATCH(word) AGAINST("'.$sw.'") as score FROM wordlist WHERE word LIKE "%'.$sw.'%" ORDER BY score DESC;';

此外,你应该检查转义,sql注入和准备好的语句。

答案 3 :(得分:0)

也许你应该使用LIKE比较但是如果你想继续使用MATCH()AGAINST()试试这个:

    $sw = '食';
  $query = 'SELECT *, MATCH(word) AGAINST("+'.$sw.'") as score FROM wordlist WHERE MATCH(word) AGAINST("+'.$sw.'") ORDER BY score DESC;';