php - MySQL 匹配 - 在 bool 模式下?

标签 php mysql

我正在使用 PDO 执行 MATCH AGAINST 查询。

以下内容不返回任何内容:

SELECT title, author, isbn, MATCH(title, isbn) AGAINST (:term) AS score 
FROM books 
WHERE MATCH(title, isbn) AGAINST (:term)
ORDER BY score DESC LIMIT 0,10

完美返回的地方:

SELECT title, author, isbn, MATCH(title, isbn) AGAINST (:term) AS score
FROM books
WHERE MATCH(title, isbn) AGAINST (:term IN BOOLEAN MODE)
ORDER BY score DESC LIMIT 0,10

谁能告诉我为什么 IN BOOLEAN MODE 会产生如此大的差异,以及我是否应该在查询中使用它?

最佳答案

第二个查询作为“自然语言搜索”运行,因为这是未指定自然语言搜索类型时的默认设置。这种类型的搜索过滤器还会自动过滤掉 50% 或更多行中出现的单词。

“IN BOOLEAN MODE”确实会执行此附加过滤,因此,如果您正在搜索常用术语,则可能会返回匹配项。

是否应该使用 bool 搜索取决于您的具体情况,如果没有更多信息就无法确定。但是,一些考虑因素可能包括输入数据集的大小与您想要返回的匹配数据集的大小以及是否要返回频繁出现的单词的结果。

(引用:http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html)

关于php - MySQL 匹配 - 在 bool 模式下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2227824/

相关文章:

mysql服务器在另一个时区,需要正确的时间

VARCHAR 字段上的 MySQL Errno 150

mysql - 恢复损坏的表

php - 在 jquery 自动完成中发送帖子或获取信息

php - MySQL FULLTEXT 不匹配带通配符的字符串

php - 制作 FFmpeg 缩略图?

sql - Mysql查询问题

php - echo 未传递 var 已传递 while

php - 在 PHP、MySQL 中将隐藏值从一个页面传递到另一页面并删除它

mysql - 对多行求和(包括重复行)