php - MySQL和PHP搜索相似词

标签 php mysql select

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

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

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

最佳答案

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

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

自然语言全文搜索:

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

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

关于php - MySQL和PHP搜索相似词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20357734/

相关文章:

PHP preg_match 请帮忙。很简单

php - 将每个数组值作为单独的行插入 codeigniter 从 Controller 到模型

php - 使用 Doctrine 和 Symfony2 查询多对多关系

php - MySQL NULL 或用户输入

php - Mysql extractvalue 函数从 xml 内容中检索 xml 片段

mysql - 将 INSERT 与带有自定义值的 SELECT 语句结合起来

mysql - 为 select 中返回的空字段设置默认值

php - cakephp 在当前模型中使用另一个模型

mysql - 将sql查询转换为xml格式

mysql - 需要一个 SQL 查询来将列值映射到列名