MySQL匹配 - IN BOOLEAN MODE?

时间:2010-02-09 09:00:11

标签: 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会产生这样的差异,以及我是否应该在我的查询中使用它?

1 个答案:

答案 0 :(得分:4)

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

“IN BOOLEAN MODE”会执行此额外过滤,因此,如果您搜索常用术语,则可能会返回匹配项。

您是否应该使用布尔搜索取决于您的具体情况,如果没有更多信息则无法确定。但是,某些注意事项可能包括输入数据集的大小与要返回的匹配数据集的大小以及是否要返回频繁出现的单词的结果。

(参考:http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html