2010-08-14 175 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

相关问题