我的MySQL表包含具有名称(项目名称)和关键字(与该项目相关的单词)属性的项目。我用以下代码搜索数据库。
SELECT * FROM items WHERE (name LIKE '%$query%' OR keywords LIKE '%$query%') LIMIT $start, $per_page"
一个项目是电话,它的关键字为“ mobile”,因此当有人搜索mobile时,该项目就会出现,这很好。但是,当某人搜索带有“”结尾的“手机”时,则不会显示任何结果。如何让我的查询搜索包含搜索词的任何内容?
假设由于缺乏细节而导致投票否决,我在解释时进行编辑。
Like运算符将严格的字符模式与一些通配符匹配。您要数据库要做的是解释搜索词上的自然语言变体,以解决诸如复数之类的问题。您不能仅凭模式匹配来做到这一点。没有一个很好的,可靠的方法可以使用Like或类似运算符匹配搜索词的一部分(例如,我们可以编写代码来删除搜索中的任何尾随空格,以尝试匹配更多项目)。我建议您研究以下内容,这是所有主要RDBMS平台(例如MS SQL)共有的功能:
自然语言全文搜索:
http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html
该链接是对功能的参考,并带有示例代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句