2010-08-14 176 views
0

有沒有簡短的方法來檢查字符串列表是否是%LIKE%給定的字符串?檢查其他字符串的列表是否爲%LIKE%另一個字符串

例如:

書 動物 一個

都願意滿足這一條件的 「一本關於動物」?

我知道我可以寫出標題像'%book%'和'%animal%'LIKE標題等,但這似乎很笨拙。

我使用它作爲自動完成,我返回結果中每個單詞的結果。

+0

我想你是誤會了'LIKE'操作的語法。 – Timwi 2010-08-14 22:04:30

+0

只是輸入錯誤..固定 – babonk 2010-08-14 22:10:03

回答

0

隊友......使檢索列進 「全文」 colums,然後做

SELECT * FROM books WHERE MATCH(fulltext_column) AGAINST('animal book a')

最佳途徑。 :)看到http://devzone.zend.com/article/1304

+0

在自動完成上使用FULLTEXT搜索有意義嗎?我會認爲你需要完美的自動完成%LIKE%精度.. – babonk 2010-08-14 22:08:57

+0

爲你想要的。你不想要完美的精確度 - 你希望能夠以任何順序匹配單詞 - 就像那樣限制性太強。 – 2010-08-14 22:15:02

+0

我擔心的是FULLTEXT有一個像停用詞,最小長度等的限制而像在精密完美的..所以我想ITD是更適合於自動完成 – babonk 2010-08-14 22:16:37

0

你應該看看http://lucene.apache.org/solr/,它讓你索引你的數據,然後可以給一個REST API,你可以調用它來填充自動完成下拉列表。

+0

感謝您的提示..現在,雖然我是一種截止日期,所以我想得到這個與MySQL的工作 – babonk 2010-08-14 22:04:54

0

據我所知,你有兩個選擇:

1)有很多的WHERE子句就像你有執行查詢。

2)維護列的所有單詞的副本排序。然後,你可以搜索排序令牌和執行查詢:

SELECT * FROM Table WHERE Title_sorted LIKE "%a%animal%book%" 
+0

是的,你也可以使用SOLR,但在列表中沒有可以做的選項(2)。 – 2010-08-14 22:05:40

+0

選項2需要3個單詞。 – kennytm 2010-08-14 22:07:16

+0

對不起,我前一陣子沒有回覆。有一個原因,你維護一個單獨的,排序的列;) – 2010-09-14 21:24:49

0

MySQL有一個全文搜索索引,我建議你看看,要得到有效的結果。使用Lucene可能僅僅是一個自動完成的矯枉過正。

+0

是否有意義使用FULLTEXT搜索自動完成?我認爲你需要完美的自動完成%LIKE%精度。 – babonk 2010-08-14 22:09:30

相關問題