有没有简短的方法来检查字符串列表是否是%LIKE%给定的字符串?检查其他字符串的列表是否为%LIKE%另一个字符串
例如:
书 动物 一个
都愿意满足这一条件的 “一本关于动物”?
我知道我可以写出标题像'%book%'和'%animal%'LIKE标题等,但这似乎很笨拙。
我使用它作为自动完成,我返回结果中每个单词的结果。
有没有简短的方法来检查字符串列表是否是%LIKE%给定的字符串?检查其他字符串的列表是否为%LIKE%另一个字符串
例如:
书 动物 一个
都愿意满足这一条件的 “一本关于动物”?
我知道我可以写出标题像'%book%'和'%animal%'LIKE标题等,但这似乎很笨拙。
我使用它作为自动完成,我返回结果中每个单词的结果。
队友......使检索列进 “全文” colums,然后做
SELECT * FROM books WHERE MATCH(fulltext_column) AGAINST('animal book a')
最佳途径。 :)看到http://devzone.zend.com/article/1304
你应该看看http://lucene.apache.org/solr/,它让你索引你的数据,然后可以给一个REST API,你可以调用它来填充自动完成下拉列表。
感谢您的提示..现在,虽然我是一种截止日期,所以我想得到这个与MySQL的工作 – babonk 2010-08-14 22:04:54
据我所知,你有两个选择:
1)有很多的WHERE子句就像你有执行查询。
2)维护列的所有单词的副本排序。然后,你可以搜索排序令牌和执行查询:
SELECT * FROM Table WHERE Title_sorted LIKE "%a%animal%book%"
是的,你也可以使用SOLR,但在列表中没有可以做的选项(2)。 – 2010-08-14 22:05:40
选项2需要3个单词。 – kennytm 2010-08-14 22:07:16
对不起,我前一阵子没有回复。有一个原因,你维护一个单独的,排序的列;) – 2010-09-14 21:24:49
MySQL有一个全文搜索索引,我建议你看看,要得到有效的结果。使用Lucene可能仅仅是一个自动完成的矫枉过正。
是否有意义使用FULLTEXT搜索自动完成?我认为你需要完美的自动完成%LIKE%精度。 – babonk 2010-08-14 22:09:30
我想你是误会了'LIKE'操作的语法。 – Timwi 2010-08-14 22:04:30
只是输入错误..固定 – babonk 2010-08-14 22:10:03