【问题标题】:"Fuzzier" search in mysqlmysql中的“模糊”搜索
【发布时间】:2013-08-12 12:11:22
【问题描述】:

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

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

给我的案例是这样的:

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

据我所知,检查表中每一行的每一列值是否有任何像搜索查询一样的“模糊”。

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

提前致谢!

【问题讨论】:

    标签: mysql search


    【解决方案1】:

    看看 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列表。

    【讨论】:

    • hmmm 已经实现了全文,但我的客户给我的情况没有改变:/ 我正在使用 .NET 系统,所以我不确定其他选项是否适合...
    • 您在 10 分钟内实现了全文搜索?真的吗?真的真的?此外,其他选项与编程语言无关,所以我不知道为什么会有问题。最后但同样重要的是,here's a Lucene implementation in .NET
    • 好吧,我在列上添加了 FULLTEXT 索引并将我的 SP 更改为使用 Match (...) AGAINST (...)... 还有什么?
    【解决方案2】:

    你确实需要比 LIKE 更模糊的东西。我建议使用 Lucene 之类的工具查看词干和索引。

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 2016-07-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2015-01-09
      • 1970-01-01
      相关资源
      最近更新 更多