【问题标题】:How to get most frequent term from IndexReader using Apache lucene 6.4.0如何使用 Apache lucene 6.4.0 从 IndexReader 获取最常用的术语
【发布时间】:2017-01-31 18:48:04
【问题描述】:

似乎 Apache Lucene api 从每个版本都发生了变化。如何从 Apache lucene 6.4.0 的 IndexReader 中获取最常用的术语。

我看到Get highest frequency terms from Lucene index 对 Apache Lucene 6.4.0 没有用处

【问题讨论】:

  • 所有领域的热门词?
  • 是的,@Mysterio。

标签: lucene


【解决方案1】:

这就是适用于 Lucene 6.4 的代码。它在所有字段中查找最频繁的术语,用于分别在字段调整代码中查找最频繁的术语。

        IndexReader reader = DirectoryReader.open(dir);
        final Fields fields = MultiFields.getFields(reader);
        final Iterator<String> iterator = fields.iterator();

        long maxFreq = Long.MIN_VALUE;
        String freqTerm = "";
        while(iterator.hasNext()) {
            final String field = iterator.next();
            final Terms terms = MultiFields.getTerms(reader, field);
            final TermsEnum it = terms.iterator();
            BytesRef term = it.next();
            while (term != null) {
                final long freq = it.totalTermFreq();
                if (freq > maxFreq) {
                    maxFreq = freq;
                    freqTerm = term.utf8ToString();
                }
                term = it.next();
            }
        }

        System.out.println(freqTerm + " " + maxFreq);

【讨论】:

  • 谢谢@Mysterion,这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2013-02-20
  • 1970-01-01
相关资源
最近更新 更多