【问题标题】:Lightweight fuzzy search library轻量级模糊搜索库
【发布时间】:2010-09-07 16:54:15
【问题描述】:

你能推荐一些轻量级的模糊文本搜索库吗?

我想要做的是让用户找到错误的搜索词的正确数据。

我可以使用像 Lucene 这样的全文搜索引擎,但我认为这有点矫枉过正。

编辑:
为了使问题更清楚,这里是该库的主要场景:
我有一大串字符串。我希望能够在此列表中搜索(类似于 MSVS 的智能感知),但应该可以通过字符串过滤此列表,该字符串不存在但与列表中的某个字符串足够接近。
示例:

  • 红色
  • 绿色
  • 蓝色

当我在文本框中输入“Gren”或“Geen”时,我想在结果集中看到“Green”。

索引数据的主要语言是英语。

我认为 Lucene 对于这项任务来说太重了。

更新

我找到了一款符合我要求的产品。这是ShuffleText
你知道任何替代方案吗?

【问题讨论】:

    标签: fuzzy-search


    【解决方案1】:

    一个强大、轻量级的解决方案是sphinx

    它比 Lucene 更小,并且支持消歧。

    它是用 c++ 编写的,速度快,经过实战考验,有适用于每个环境的库,并且被大公司使用,例如 craigslists.org

    【讨论】:

      【解决方案2】:

      我不确定 Lucene 是否适合模糊搜索,自定义库会是更好的选择。例如,这个搜索是在 Java 中完成的并且运行速度非常快,但它是为这样的任务定制的: http://www.softcorporation.com/products/people/

      【讨论】:

        【解决方案3】:

        如果可以选择使用数据库,我推荐使用 PostgreSQL 及其fuzzy string matching functions

        如果您可以使用 Ruby,我建议您查看 amatch library

        【讨论】:

          【解决方案4】:

          尝试基于集成到 SQL Server 和 Oracle DB 的 Lucene API 的 Walnutil。您可以创建任何类型的索引,然后使用它。对于简单的搜索,您可以使用 walnutilsoft 的一些方法,对于更复杂的搜索情况,您可以使用 Lucene API。请参阅基于 Web 的示例,其中使用了从 Walnutil 工具创建的索引。您还可以看到一些用 Java 和 C# 编写的代码示例,您可以使用它来创建不同类型的搜索。 这个工具是免费的。 http://www.walnutilsoft.com/

          【讨论】:

            【解决方案5】:

            您没有指定您的开发平台,但如果是 PHP 则建议您查看 ZEND Lucene 库:

            http://ifacethoughts.net/2008/02/07/zend-brings-lucene-to-php/ http://framework.zend.com/manual/en/zend.search.lucene.html

            由于它的 LAMP 比 Java 上的 Lucene 轻得多,并且可以轻松扩展为其他文件类型,前提是您可以找到转换库或命令行转换器 - 有很多 OSS 解决方案可以做到这一点。

            【讨论】:

              【解决方案6】:

              Lucene 具有很强的可扩展性——这意味着它也适用于小型应用程序。如果您只需要这样,您可以非常快速地在内存中创建索引。

              对于模糊搜索,您确实需要决定要使用哪种算法。通过信息检索,我成功地使用了 Lucene 的n-gram 技术。但这是一种特殊的索引技术,本身并不是“库”。

              如果不了解您的应用程序的更多信息,推荐合适的库并不容易。您正在搜索多少数据?数据是什么格式的?数据多久更新一次?

              【讨论】:

                【解决方案7】:

                Soundex 的编码非常“英式” - Daitch-Mokotoff 对许多名称更适用,尤其是欧洲(日耳曼)和犹太名称。在我以英国为中心的世界里,这就是我所使用的。

                维基here.

                【讨论】:

                  【解决方案8】:

                  @aku - 工作 soundex 库的链接就在页面底部。

                  至于 Levenshtein 距离,Wikipedia article on that 在底部也列出了实现。

                  【讨论】:

                    猜你喜欢
                    • 2010-09-10
                    • 1970-01-01
                    • 2011-02-28
                    • 1970-01-01
                    • 2020-03-15
                    • 2014-08-20
                    • 2011-10-28
                    • 2016-06-12
                    • 2017-06-09
                    相关资源
                    最近更新 更多