php - 为什么 MATCH against 的效果不如 Exact match?

标签 php mysql search full-text-search

我的 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/

相关文章:

php - bintohex() 和 random_bytes() 函数在 Linux 上的 PHP 5.6 中未定义

php - Mysql如何连接表

php - 如何优化这个 mysql/php 查询?

java - 搜索扩展名为 .java 的文件

search - 如何强制对Elasticsearch “terms”查询进行not_analyzed

php - 在 RouteServiceProvider 中找不到 Laravel 5 路由

php - WordPress 后端显示具有特定评论数的帖子

javascript - 如何使用 JavaScript/jQuery 编辑 PHP 变量?

mysql - 从连接表中获取计数

php - 关键词搜索,多表,PHP和Mysql,Join用哪个?