java - 按 Lucene 词典中的用法对建议的单词进行排序

标签 java lucene full-text-search autosuggest

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

但它是按字母顺序排序的。我想按最常用的单词(或路加福音中命名的“顶级术语”)对其进行排序。我发现了一些关于 SortSortField 的内容,但我不知道如何在这个建议场景中使用它。对于此任务是否有任何简单的解决方案,或者我是否需要编写自己的功能,在其中我需要获取特定单词的频率?

最佳答案

尝试使用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/

相关文章:

java - MVP中实例化 View 的职责

java - 如何重命名 Java 项目(Eclipse 或其他项目)中的 1000 个类名?

lucene - 如何使用休眠 lucene 搜索具有多对一关系的实体

c# - 使用 Lucene.NET 搜索过滤器

search - ElasticSearch:全文搜索变得容易

mysql - Sphinx 和 GUID

java - 使用 Java 谈论网络上的一些项目?

java - TCP 客户端接受对象

java - 从命中/命中迁移到 TopDocs/TopDocCollector

java - Lucene:多词短语作为搜索词