我有一個表叫myatts
存在:MySQL全文索引返回結果爲零,即使確切的搜索詞表中的
- 它有大約3332834行數據。
- 我一般搜索欄「內容」
- 我有大約40行,其中內容=大鼠,D.D。
但是,當我全文搜索它,我沒有得到任何結果。但是如果我使用LIKE,我會得到結果。
我想堅持全文,誰能幫我找出爲什麼沒有結果返回?
這裏是我的表結構:
id
int(11) Not null AUTO_INCREMENT
join_id
int(11) Not Null
webid
int(11) Not Null
content
text utf8_general_ci
這裏是我的指標
Keyname Type Unique Packed Field Cardinality
PRIMARY BTREE Yes No id 3332834
content BTREE No No content (333) 238059
id_index BTREE No No webid 151492
join_id BTREE No No join_id 36
content_ft FULLTEXT No No content 119029
這裏是我的查詢:
SELECT * FROM myatts WHERE MATCH(content) AGAINST('Rat, D.D.' IN BOOLEAN MODE)
這裏是解釋:
1 SIMPLE myatts fulltext content_ft content_ft 0 1 Using where
任何幫助/指針都會很棒。謝謝!
啊是的,我想過這個,但我認爲我的大腦把整個短語看成是超過3個字符長。我敢打賭就是這樣。 – Steven
我需要一些時間來更改設置,看看是否有問題。我覺得我也可以製作一個php腳本來檢查搜索短語中最大的單詞,如果它小於4,請使用「like」代替? – Steven
它的種類取決於您的搜索是更自然的語言類型搜索還是獨特且具體(可預測)的格式,如模型/零件編號。您還可以微調哪些字符是停用詞以及如何處理連字符。閱讀FULLTEXT搜索手冊的整個部分將獲得很好的回報。就我個人而言,除非我對零件號碼或專有名詞(名稱,地點)進行完全匹配,否則我會盡量避免使用LIKE類型的搜索。 –