2013-06-25 55 views
0

我想在沒有全文索引的情況下對我的表執行布爾模式搜索。我的數據集要求非常精細的細節層次,所以我的文檔中的每個單詞都是自己的行,而不是每個文檔都是一行。是否有可能將常規索引作爲布爾模式搜索的主題,而不是將全文索引(這裏明顯無用)作爲主題?布爾模式在單個字的列上搜索MySQL

回答

0

這聽起來像你的數據是文檔字結構。

使這項工作的一種方法是使用標準比較和having子句。下面將搜索「wordA」和「wordB」,而不是「WordC」:

select DocumentId 
from DocumentWords dw 
group by DocumentId 
having max(word = 'WordA') > 0 and 
     max(word = 'WordB') > 0 and 
     mac(word = 'WordC') = 0; 

如果你想使用全文索引,然後拼接你的文件一起,做這樣的事情:

select DocumentId, group_concat(word separator ', ') 
from DocumentWords dw 
group by DocumentId 

將其存儲爲單獨的表格,並在其中使用全文索引。