用Lucene查找打字错误

用Lucene查找打字错误,lucene,levenshtein-distance,fuzzy-search,Lucene,Levenshtein Distance,Fuzzy Search,我想使用Lucene索引/搜索文本。文本可能包含键入错误的单词、名称等。让Lucene查找包含以下内容的文档的最简单方法是什么 "this is Licene" 当用户搜索 "Lucene"? 这只是一个演示应用程序,所以我们需要最简单的解决方案。Lucene的模糊查询和基于Levenshtein编辑距离的查询 在QueryParser中使用,语法如下: Lucene~0.5 或者创建一个,传入最大编辑次数,类似于: Query query = new FuzzyQuery(new T

我想使用Lucene索引/搜索文本。文本可能包含键入错误的单词、名称等。让Lucene查找包含以下内容的文档的最简单方法是什么

"this is Licene" 
当用户搜索

"Lucene"? 

这只是一个演示应用程序,所以我们需要最简单的解决方案。

Lucene的模糊查询和基于Levenshtein编辑距离的查询

在QueryParser中使用,语法如下:

Lucene~0.5
或者创建一个,传入最大编辑次数,类似于:

Query query = new FuzzyQuery(new Term("field", "lucene"), 1);

注意:
FuzzyQuery
,在Lucene 4.x中,不支持大于2的编辑距离

您可以尝试的另一个选项是使用Lucene拼写检查器:

这是一款开箱即用的产品,非常容易使用:

  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);

默认情况下,它使用LevensteInstance,但您可以提供自己的自定义编辑距离。

谢谢您的回答。我等待着其他的方法或方法浮出水面,看起来这是一条路要走。