我想找到一種方法來查詢特定的數據庫表列中的相似字符串或單詞。舉例來說,如果我有一個字符串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
這能有一個查詢做了什麼?
我想找到一種方法來查詢特定的數據庫表列中的相似字符串或單詞。舉例來說,如果我有一個字符串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
這能有一個查詢做了什麼?
看起來你正試圖匹配你給定列表中的任何單詞。 我會使用「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
在基本層面,要實現在列full-text index,所以(假設你的列col1和你的表是TBL),你需要alter table tbl add fulltext(col1);
和使用廚房搜索...
等等,如this tutorial所述。 @ WinnieTong的回答沒有任何問題,只是這種用例恰恰是全文索引的設計目的。
當您超出mysql的能力範圍時,人們通常會使用Sphinx或Apache SoLR來完成可搜索的索引。
...並可能在構建查詢時過濾出「I」,「have」,「in」,「和」,「或」等字樣。 –
我可以看到,但我要搜索的字符串將存儲在一個變量中。 – Budove