16

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

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

我可以使用像 Lucene 这样的全文搜索引擎,但我认为这太过分了。

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

  • 红色的
  • 绿色的
  • 蓝色的

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

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

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

更新

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

4

8 回答 8

3

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

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

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

于 2008-09-03T16:34:41.100 回答
2

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

于 2012-10-25T04:36:59.553 回答
1

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

维基在这里

于 2008-09-03T16:10:56.087 回答
1

您没有指定您的开发平台,但如果它的 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 轻得多,并且可以轻松地扩展到其他文件类型,只要您可以找到转换库或 cmd 行转换器 - 周围有很多 OSS 解决方案可以做到这一点。

于 2010-01-05T03:23:44.027 回答
1

如果可以选择使用数据库,我推荐使用 PostgreSQL 及其模糊字符串匹配功能

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

于 2009-03-12T04:25:29.580 回答
1

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

于 2010-09-10T13:32:26.257 回答
0

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

至于 Levenshtein 距离,关于该距离的Wikipedia 文章也在底部列出了实现。

于 2008-09-03T15:58:37.583 回答
0

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

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

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

于 2012-03-10T04:29:44.630 回答