我们有很多对象,每个对象都有大约100-200字的描述。 (例如一本书的作者姓名和小摘要)。
用户将输入作为单词的系列。如何使用近似文本和次要拼写更改实现搜索?例如“Joshua Bloch”,“Joshua blosh”,“joshua block”可能导致相同的文本结果。
答案 0 :(得分:1)
如何使用近似文本和次要拼写更改来实现搜索?例如“Joshua Bloch”,“Joshua blosh”,“joshua block”可能导致相同的文本结果。
您的数据库是否支持Soundex? Soundex将匹配类似的声音单词,这似乎符合您上面给出的示例。即使您的数据库没有本机soundex,您仍然可以编写实现并将每个作者姓名的soundex保存在单独的字段中。这可以用于以后匹配。
然而Soundex并不是全文搜索的替代品;它只会在特定情况下有助于作者姓名。如果您正在寻找一些特定的文字,比如说,这本书的模糊,那么您最好使用全文搜索选项(如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编写的高性能全文搜索引擎库。