【问题标题】:MySQL and PHP search for similar wordsMySQL 和 PHP 搜索相似词
【发布时间】:2013-12-19 21:34:11
【问题描述】:

我的 MySQL 表包含具有属性名称(项目名称)和关键字(与项目相关的词)的项目。我用以下代码搜索数据库..

SELECT * FROM items WHERE (name LIKE '%$query%' OR keywords LIKE '%$query%') LIMIT $start, $per_page"

一个项目是一部电话,它有一个关键字“移动”,所以当有人搜索移动设备时,该项目会显示为结果,这很好。但是,当有人搜索末尾带有 s 的“手机”时,它不会显示任何结果。如何让我的查询搜索包含搜索词的任何内容?

【问题讨论】:

  • 你的桌子上有多少东西?我可以建议你两件事:MyISAM / Aria FULLTEXT 搜索或......基于 Lucene 的东西,如 ElasticSearch/SolR。
  • 我的桌子上有成百上千的物品 :)

标签: php mysql select


【解决方案1】:

假设由于缺乏细节而被否决,我正在编辑解释。

Like 运算符将严格的字符模式与一些通配符匹配。您要求数据库做的是解释搜索词的自然语言变体以解释复数之类的东西。您不能仅通过模式匹配来做到这一点。没有好的、可靠的方法可以用 Like 或类似运算符匹配搜索词的一部分(例如,我们可以编写代码来删除搜索中的任何尾随空格,以尝试匹配更多项目)。我建议您研究以下所有主要 RDBMS 平台(例如 MS SQL)共有的功能:

自然语言全文搜索:

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

该链接是对包含示例代码的功能的引用。

【讨论】:

  • 我认为这可能是我的问题的解决方案,只需要尝试一下。 :) 我不知道为什么有人投了反对票,而且我没有声誉投票赞成或反对:(
  • 我试图改进答案。我希望你能解决你的问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-12-18
  • 2013-04-26
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多