根据 Lucene 词典的用法对建议的单词进行排序
Sorting suggested words by usage from Lucene Dictionary
我是 Java/Lucene 的初学者。我正在尝试按 Lucene 词典中最常用的词对前 20 个建议词进行排序。
此代码片段 returns 我的前 20 个单词以字符 "a" 开头,来自字段 "tokens":
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);
但它是按字母顺序排列的。我想按最常用的词(或 "top ranking terms",因为它在 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);
我是 Java/Lucene 的初学者。我正在尝试按 Lucene 词典中最常用的词对前 20 个建议词进行排序。
此代码片段 returns 我的前 20 个单词以字符 "a" 开头,来自字段 "tokens":
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);
但它是按字母顺序排列的。我想按最常用的词(或 "top ranking terms",因为它在 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);