mysql - "Fuzzier"在mysql中搜索

标签 mysql search

我的客户在看到我在他的网站中编写的搜索功能后,要求我将其变得“更模糊”,这意味着它应该更通用——大概是为了返回更多的搜索结果。

我不清楚如何做到这一点。目前,对于每个部分,我都在数据库中的表(每一列)中搜索一个值 LIKE 搜索查询。

给我的案例是这样的:

表格中有一行 complexname 的值为“Larae's Corner”,但搜索“Larae”不会返回它作为结果。

据我所知,检查表中每一行的每一列值是否有任何类似搜索查询的内容是任何人都可能得到的“模糊”。

谁能帮我解决这个问题?我在这里寻找概念。我需要更详细地了解搜索的工作原理,而不仅仅是 LIKE...

提前致谢!

最佳答案

看看 MySQL 的 full text search functions .与其natural language searches ,这可能足以满足您的需求。 InnoDB 从 MySQL 5.6 开始支持全文搜索(之前只有 MyISAM 表有此功能)。

如果这还不够,您可能需要一个专用的搜索工具,例如 Apache Solr (或者,如果您正在使用 Java 并希望直接与 Solr 的底层搜索引擎交互,Apache Lucene)。其他受欢迎的选择包括 elasticsearch (它也在其引擎盖下使用 Lucene)和 Sphinx .

搜索引擎内部工作的关键部分是 stemming ,这duffymo mentioned in his answer .

编辑:

这是索引兼容的列表 Lucene implementations in different languages .

关于mysql - "Fuzzier"在mysql中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18186665/

相关文章:

performance - 改进 PostgreSQL 中小数据文本搜索的好处和权衡

c++ - 通过发音查找相似词 - 算法、方法、库

php - 使用 like 或 contains 进行 sql 搜索

php - 一个循环直到在存储过程中

sql - 如何在具有相同结构的两个 MySQL 表中选择不同的行?

php - 使用外键和限制约束的 Laravel Softdelete?

mysql - 使用组合 sum 和 max 查找最大值

mysql - 将 CPLEX OPL 模型与 MySQL DB 连接

java - 搜索扩展名为 .java 的文件

search - 如何在 OpenSearchServer 中抓取但不索引网页?