轻量级模糊搜索库

16

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

我的需求是允许用户在输入有误的情况下找到正确的搜索结果。

我可以使用类似Lucene这样的全文搜索引擎,但我认为这太过浩大。

编辑:
为了更清楚地描述问题,以下是该库的主要应用场景:
我有一个大型字符串列表。我想要在此列表中进行搜索(类似于MSVS的Intellisense),但应该可以通过不在列表中但接近某个在列表中的字符串的字符串来过滤此列表。
例如:

  • 红色
  • 绿色
  • 蓝色

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

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

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

更新:

我找到了一个符合我的要求的产品。它是ShuffleText。你知道其他替代品吗?

8个回答

3

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

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

如果不了解您的应用程序更多信息,将很难推荐适合的库。您搜索多少数据?数据格式是什么?数据更新频率如何?


2

我不确定Lucene在模糊搜索方面的适用性,自定义库可能是更好的选择。例如,这个搜索是用Java完成的,速度相当快,但它是专门为这样的任务定制的:http://www.softcorporation.com/products/people/


1

1

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


1

1

Soundex在编码方面非常“英式” - Daitch-Mokotoff对许多名称,特别是欧洲(日耳曼)和犹太人的名称更有效。在我以英国为中心的世界中,这是我使用的。

维基此处


0
一个强大而轻量级的解决方案是sphinx
它比Lucene更小,支持消歧。
它是用C++编写的,速度快,经过实战检验,有适用于各种环境的库,并被像craigslists.org这样的大公司所使用。

0

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

至于Levenshtein距离,维基百科上的文章也列出了实现方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接