1

我有一個名爲'fact'的標題欄,它應該是全文索引。全文搜索總是返回空結果集

首先,我添加了一個全文索引:

ALTER TABLE fact ADD FULLTEXT title_fts (title) 

所以,我插排:

INSERT INTO fact (id, title) VALUES ('1', 'red blue yellow ok green grey ten first wise form'); 

然後我執行搜索:

select * from fact f where contains (f.title, '"red" or "blue"') 

當我執行下面的查詢或任何其他帶有'contains'語句的查詢,我會得到emtpy結果集:

我得用這個說法,不是反對或類似。 有沒有人碰巧知道爲什麼會發生這種情況? 謝謝。

+0

這不是全文搜索,你需要使用'match against'語法 –

+0

你是完全正確的。這解決了它。謝謝! – YoungDev

回答

2

有兩個確實使用全文搜索時的重要概念。首先是最小工作長度(請參閱here)。默認情況下,該值爲4,這意味着比這更短的單詞被忽略。再見「紅」,「好」,「十」等短字。

第二個重要概念是停用詞列表(請參見here)。這也將擺脫「好」和「第一」。

您的文本沒有「藍色」和「紅色」被忽略,所以您的查詢不會返回任何內容。

你需要重新構建你的索引後,你決定的話,你真的需要包括。

+0

非常感謝!但是,當我用(僅)5個字母的單詞做同樣的事情時,那就是:select * from fact f where contains(f.title,'green or yellow'),我仍然得到空的結果集。全文索引是否應該重新配置? – YoungDev

+1

@YoungDev。 。 。您還需要了解布爾模式與自然語言模式。你的查詢結構表明你應該堅持布爾模式。 –

+0

我正在閱讀。再一次,謝謝你! :) – YoungDev