2010-09-19 80 views
0

我们有很多对象,每个对象都带有大约100-200字的描述。 (例如一本书的作者姓名和小概要)。带拼写更改/错误的全文搜索

用户将输入作为单词的系列输入。如何使用近似文字和小拼写更改来实现搜索?例如,“约书亚布洛赫”,“约书亚blosh”,约书亚块“可能导致同样的文本结果。

+0

我对拼写检查知之甚少,但我听说bloom filter在这种情况下很有用。请检查链接。 http://ipowerinfinity.wordpress.com/2008/03/02/bloom-filters-designing-a-spellchecker/ – Emil 2010-09-20 06:01:45

回答

1

如果您使用Lucene进行全文搜索,那么可能会出现“Did you mean”扩展名。

1

如何实现具有近似的文字和小的拼写变化搜索?例如‘约书亚布洛赫’,”约书亚blosh “约书亚区块”可能导致相同的文字结果。

你的数据库是否支持Soundex? Soundex将匹配类似的声音词,这似乎符合你上面给出的例子。即使您的数据库没有本地soundex,您仍然可以编写一个实现并将每个作者名称的soundex保存在单独的字段中。这可以用于稍后匹配。

但是Soundex不是全文搜索的替代品;它只会在特定情况下帮助作者的名字。如果你正在寻找某些特定的文字说法,那么这本书的内容就会比较好用了全文搜索选项(如Postgresql's)。

1

如果您正在寻找实际的实现这个功能,这里是由彼得·诺维格谱写了光辉灿烂的程序:http://norvig.com/spell-correct.html

它也有许多其他语言包括Java,C等链接,实现

0

Apache Lucene可能适合您的账单。它是完全用Java编写的高性能完整测试搜索引擎库。

1

您可以使用拼写检查器JOrtho。从数据库的上下文中,您可以生成自定义字典并进行设置。然后,所有不在字典中但不在数据库中的单词都会标记为错误的拼写。

1

而不是Lucene,请检查Solr。 Lucene是一个库,您可以使用它将搜索功能嵌入到应用程序中。 Solr是Lucene的实际实现,您可以通过API直接插入到您的应用程序中。对于大多数系统,Solr将节省处理Lucene的复杂性。