2016-08-03 100 views
0

我有表和標題,我只想找到標題組成的全部單詞的子集。在MySQL全文搜索中,如何搜索只包含特定單詞的文檔?

例如,

SELECT title 
FROM my_titles_table WHERE MATCH (title) AGAINST ('word1 word2 word3 ... wordN' IN NATURAL LANGUAGE MODE) 

我想找到由字詞1字詞2 WORD3 ... wordN或它們的子集的所有冠軍,但沒有其他字。例如,如果我的查詢是「如何訓練你的龍」作爲我的話,那麼我想找到像「龍」,「訓練你的龍」或「你的龍訓練」,而不是「地下城」和龍「,因爲單詞」地牢「不在我的查詢中。

回答

0

我不認爲全功能搜索支持此功能。事實上,很難弄清楚這種做法的蠻力方法。

這是一個強制的方法:

where trim(replace(replace(replace(title, $word1, ''), $word2), ''), $word3, '')) = '' 

這是不完全完美,因爲「菠蘿」將匹配「菠蘿」。

嗯。 。 。有使用正則表達式另一種選擇:

where title like concat('^(', replace('word1 word2 word3', ' ', '|'), 
          '[ ]*)+$) 

也就是說,本場比賽必須在開始和結束的字符串,而其間必須全部匹配的話開始。

據我所知,沒有辦法加快這樣的查詢。