拼写更改/错误的全文搜索

时间:2010-09-19 06:27:24

标签: java indexing full-text-search

我们有很多对象,每个对象都有大约100-200字的描述。 (例如一本书的作者姓名和小摘要)。

用户将输入作为单词的系列。如何使用近似文本和次要拼写更改实现搜索?例如“Joshua Bloch”,“Joshua blosh”,“joshua block”可能导致相同的文本结果。

6 个答案:

答案 0 :(得分:1)

  

如何使用近似文本和次要拼写更改来实现搜索?例如“Joshua Bloch”,“Joshua blosh”,“joshua block”可能导致相同的文本结果。

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

然而Sou​​ndex并不是全文搜索的替代品;它只会在特定情况下有助于作者姓名。如果您正在寻找一些特定的文字,比如说,这本书的模糊,那么您最好使用全文搜索选项(如Postgresql's)。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

如果您正在寻找此功能的实际实现,请参阅Peter Norvig编写的精彩程序:http://norvig.com/spell-correct.html

它还包含许多其他语言(包括Java,C等)的实现链接。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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