我的 MySQL 表中有大约 20 行,其 Title
列为 Elsewhere
并具有其他不同的列参数。
我目前正在使用这样的查询,因为我的大多数搜索(通过 PHP 文件)都需要我进行猜测。所以我使用全文索引
SELECT * FROM `my_db` WHERE MATCH (`Title`) AGAINST ('Elsewhere' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) AND (Type ='movie' OR Type='series' OR Type IS NULL)
这工作得很好,但有时,像这样最明显的匹配给我 0 行。相反,如果我做类似的事情:
SELECT * FROM `my_db` WHERE `Title` = "Elsewhere";
它给了我所有 20 行。
与最后一个案例相比,第一个案例不应该给出更多结果,因为不够具体吗?
注意:我使用 MATCH
进行搜索。我不想每次都进行精确匹配。基本上,正在数据库上搜索客户端的用户输入。
最佳答案
事实证明,elsewhere
是 MyISAM 全文搜索的停用词:索引 http://dev.mysql.com/doc/refman/5.6/en/fulltext-stopwords.html
关于php - 为什么 MATCH against 的效果不如 Exact match?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30479479/