2010-02-09 53 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