首页 文章

MySQL:全文搜索出错 - 返回NO结果

提问于
浏览
7

我有一张表 places(name vachar(50), address text, description text) engine = MYISAM 并且记录很少 .

我一直试图在here中做一些例子,并搜索'full-text problem'但我还不清楚全文搜索 .

首先,我通过以下方式添加全文索引:

ALTER TABLE places ADD FULLTEXT(name, address, description);

并尝试mySQL:

SELECT * FROM places WHERE MATCH(name,address,description) AGAINST('my search key');

我尝试了一些'我的搜索键',内容在很多领域,但有一些情况我得到:

  • 现在已选中行 .

  • 如果我尝试 add option "IN BOOLEAN MODE" in AGAINST() ,得分= 1的结果,当我对它进行排序时,它是没有意义的 .

  • 只显示“搜索关键字”在字段(名称)中有内容时的结果 .

我试了很多但我不记得所有的情况,

任何答案都可以帮助!

提前致谢!

2 回答

  • 6

    确保您的关键字不是stop word . 要disable or modify the stop word list,您需要访问设置系统变量并重新启动服务器 .

    另外,请确保您的关键字符合minimum full text word length . 默认最小长度为4 .

    最后,确保该单词出现在不到50%的记录中 . 如果单词出现在50%或更多的记录中,MySQL将不会返回结果 .

  • 2

    除了马库斯的回答:

    当我第一次开始在MySQL中使用FULLTEXT索引时,我遇到了空结果的问题 - 我正在避免使用停止的单词,并且还使用了足够长的单词,所以我有点头疼,直到我发现它被埋在_835350中:

    当您首次尝试全文搜索以查看其工作方式时,50%阈值具有重要意义:如果您创建表并仅在其中插入一行或两行文本,则文本中的每个单词都至少出现50行的百分比 . 因此,没有搜索会返回任何结果 . 一定要插入至少三行,最好是多行 . 需要绕过50%限制的用户可以使用布尔搜索模式

    这也解释了当您将查询设置为操作IN BOOLEAN MODE时获得结果(但具有“无意义”分数)的原因

相关问题