2010-02-09 69 views
2

我正在使用PDO执行MATCH AGAINST查询。MySQL匹配 - 在BOOLEAN模式?

下返回什么:

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 

谁能告诉我,为什么在布尔模式正在这样的差别,以及我是否不应该在我的查询中使用它?

回答

4

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

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

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

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