我们有很多对象,每个对象都带有大约100-200字的描述。 (例如一本书的作者姓名和小概要)。带拼写更改/错误的全文搜索
用户将输入作为单词的系列输入。如何使用近似文字和小拼写更改来实现搜索?例如,“约书亚布洛赫”,“约书亚blosh”,约书亚块“可能导致同样的文本结果。
我们有很多对象,每个对象都带有大约100-200字的描述。 (例如一本书的作者姓名和小概要)。带拼写更改/错误的全文搜索
用户将输入作为单词的系列输入。如何使用近似文字和小拼写更改来实现搜索?例如,“约书亚布洛赫”,“约书亚blosh”,约书亚块“可能导致同样的文本结果。
如果您使用Lucene进行全文搜索,那么可能会出现“Did you mean”扩展名。
如何实现具有近似的文字和小的拼写变化搜索?例如‘约书亚布洛赫’,”约书亚blosh “约书亚区块”可能导致相同的文字结果。
你的数据库是否支持Soundex? Soundex将匹配类似的声音词,这似乎符合你上面给出的例子。即使您的数据库没有本地soundex,您仍然可以编写一个实现并将每个作者名称的soundex保存在单独的字段中。这可以用于稍后匹配。
但是Soundex不是全文搜索的替代品;它只会在特定情况下帮助作者的名字。如果你正在寻找某些特定的文字说法,那么这本书的内容就会比较好用了全文搜索选项(如Postgresql's)。
如果您正在寻找实际的实现这个功能,这里是由彼得·诺维格谱写了光辉灿烂的程序:http://norvig.com/spell-correct.html
它也有许多其他语言包括Java,C等链接,实现
Apache Lucene可能适合您的账单。它是完全用Java编写的高性能完整测试搜索引擎库。
您可以使用拼写检查器JOrtho。从数据库的上下文中,您可以生成自定义字典并进行设置。然后,所有不在字典中但不在数据库中的单词都会标记为错误的拼写。
我对拼写检查知之甚少,但我听说bloom filter在这种情况下很有用。请检查链接。 http://ipowerinfinity.wordpress.com/2008/03/02/bloom-filters-designing-a-spellchecker/ – Emil 2010-09-20 06:01:45