2013-01-06 42 views
1

我想找到一種方法來查詢特定的數據庫表列中的相似字符串或單詞。舉例來說,如果我有一個字符串MySql文本搜索找到類似的字符串

I have a foo bar in my kitchen 

查詢將返回結果,如...

foo fighters are a good band 
raise the bar 
kitchen remodeling contractors 
foo bar is a funny word 

這能有一個查詢做了什麼?

回答

2

看起來你正試圖匹配你給定列表中的任何單詞。 我會使用「OR」運算符。

實例(假設你的表稱爲my_table和您正在搜索的列my_column):

SELECT * FROM my_table WHERE my_column like '%I%' 
OR my_column LIKE '%have%' 
OR my_column LIKE '%a%' 
OR my_column LIKE '%foo%' 
OR my_column LIKE '%bar%' 
OR my_column LIKE '%in%' 
OR my_column LIKE '%my%' 
OR my_column LIKE '%kitchen%'; 

然而,這個查詢將運行得非常緩慢,由於雙通配符。 您也可以嘗試http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

+0

...並可能在構建查詢時過濾出「I」,「have」,「in」,「和」,「或」等字樣。 –

+0

我可以看到,但我要搜索的字符串將存儲在一個變量中。 – Budove

1

在基本層面,要實現在列full-text index,所以(假設你的列col1和你的表是TBL),你需要alter table tbl add fulltext(col1);和使用廚房搜索...等等,如this tutorial所述。 @ WinnieTong的回答沒有任何問題,只是這種用例恰恰是全文索引的設計目的。

當您超出mysql的能力範圍時,人們通常會使用SphinxApache SoLR來完成可搜索的索引。