有人可以告诉我如何在Lucene.net中实现"你是不是真的"功能?
谢谢!
您应该查看contrib目录中的SpellChecker模块.它是Java lucene的SpellChecker模块的一个端口,因此它的文档应该是有用的.
(来自javadocs :)
用法示例:
import org.apache.lucene.search.spell.SpellChecker; SpellChecker spellchecker = new SpellChecker(spellIndexDirectory); // To index a field of a user index: spellchecker.indexDictionary(new LuceneDictionary(my_lucene_reader, a_field)); // To index a file containing words: spellchecker.indexDictionary(new PlainTextDictionary(new File("myfile.txt"))); String[] suggestions = spellchecker.suggestSimilar("misspelt", 5);
AFAIK Lucene支持接近搜索,这意味着如果您使用以下内容:
字段:stirng〜0.5
(这是一个代号)
将匹配"字符串".浮点数是搜索的"容忍度",其中1.0是精确匹配,0.0是匹配所有(排序).
但是,不同的解析器将以不同方式实现此
邻近搜索比模糊搜索(stri*)慢得多,因此请谨慎使用.在您的情况下,人们会认为如果您在常规搜索中找不到匹配项,那么您可以尝试进行邻近搜索以查看您找到的内容,并根据结果以某种方式显示"您的意思是".
出于性能原因,可能有助于缓存此类查找以查找非常常见的错误拼写.