我是 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);
但它是按字母顺序排序的。我想按最常用的单词(或路加福音中命名的“顶级术语”)对其进行排序。我发现了一些关于 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);
关于java - 按 Lucene 词典中的用法对建议的单词进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47593763/