2013-05-19 70 views
0

假設我有一個包含單詞的字符串。其中一些詞可能是複合詞。文本搜索與Mysql數據庫表進行比較

我也有一個MySQL數據庫,其中包含一個表,其中包含一個名爲字的列。此欄可能包含出現在我的字符串中的單詞,包括複合詞。

我希望能夠找出哪些行從數據庫中檢索,當我只有字符串。將它拆分爲空格字符不是一種選擇,因爲這會使無法檢測數據庫中是否有任何複合詞出現在字符串中。

有關如何解決此問題的任何建議?

回答

0

您可以通過以下辦法做到這一點。假設您的字符串具有空格作爲分隔符並且從不包含逗號。

select * 
from words w 
where find_in_set(w.word, replace(<your string>, ' ', ',')) > 0; 

如果在字符串中的分隔符是更復雜一點 - 說這確實有punctation,你可能與regexp而非find_in_set更好:

select * 
from words w 
where concat(',', <your string>, ',') REGEXP concat('[ ,.!?]', w.word, '[ ,.!?]') 
+0

我想我會嘗試正則表達式。傻我自己沒有想過。 – user2180613

0

我相信你指的是輸入字符串和數據庫記錄之間的相關性。這更適合像Lucene/SOLR這樣的解決方案。

這就是說,你可以使用FULLTEXT索引和搜索得到一些里程:

http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html

+0

沒有針對性,只是發生。字符串「我的車撞樹」。並且包含值「car」和「tree」的表格將希望返回與這些值相對應的兩行。 – user2180613