我是Java / Lucene的初学者。我正在尝试按Lucene词典中最常用的单词对前20个建议的单词进行排序。
此代码段从字段“ tokens”以字符“ a”开头返回我的前20个单词:
AnalyzingSuggester suggester = new AnalyzingSuggester(dir, "sugest", new StandardAnalyzer(CharArraySet.EMPTY_SET));
suggester.build(new LuceneDictionary(indexReader, "tokens"));
List<LookupResult> lookupResults = suggester.lookup("a", false, 20);
但按字母顺序排序。我想按最常用的词(或称Luke的“最高排名”)对它进行排序。我发现了有关
Sort
和SortField
的信息,但是在这种建议的情况下我不知道如何使用它。有什么简单的解决方案可以完成此任务,还是我需要编写自己的功能来获取特定单词的出现频率? 最佳答案
尝试使用HighFrequencyDictionary
,如下所示:
AnalyzingSuggester suggester = new AnalyzingSuggester(dir, "sugest", new StandardAnalyzer(CharArraySet.EMPTY_SET));
suggester.build(new HighFrequencyDictionary(indexReader, "tokens", 0));
List<LookupResult> lookupResults = suggester.lookup("a", false, 20);