2009-07-01 95 views
1

我有一個非常簡單的查詢,似乎沒有給我我想要的結果。我嘗試讓用戶使用全文搜索按名稱,地址或城市搜索餐館。MySQL全文搜索不符合預期

這裏是我的查詢:

SELECT ESTAB_NAME, ESTAB_ADDRESS, ESTAB_CITY 
FROM restaurant_restaurants rr 
WHERE 
    MATCH (rr.ESTAB_NAME, rr.ESTAB_ADDRESS, rr.ESTAB_CITY) 
    AGAINST ('*new* *hua*' IN BOOLEAN MODE) 
LIMIT 0, 500 

新華是表中存在的餐廳。然而,當我做'ho搜索'我得到了我期望的結果。

有沒有人知道發生了什麼事? 我正在MySQL版本5.0.41上使用MyISAM存儲引擎

+0

你的意思是MyISAM,而不是MyISMAP。 – 2009-07-01 19:00:00

回答

1

我認爲邁克爾是正確的,但是,你也許想刪除這些*****字符,除非這些字符實際上在你正在尋找的標題中。 MATCH AGAINST不需要「全部匹配」類型的參數。

+0

他使用布爾模式,所以*對於任何字符序列都像通配符。然而,這可能是一個好主意,不要使用它們,因爲這通常不是你在搜索時期望的那種行爲(至少,我不會......) – 2009-07-01 19:31:30

0

我的猜測:「新」是一個Mysql Default Stop Word。請參閱邁克爾馬德森的第二個鏈接,瞭解如何更改停用詞表並重新獲得餐廳。

+0

布爾模式在使用時不應該如此通配符,根據文檔,即使是這樣,應該有一個由於華的匹配。 – 2009-07-01 19:33:44