使用 Lucene 计算短语 DF 的最佳方法



如何使用Lucene(4.6)计算给定短语的文档频率?

我找到了一种计算一个学期DF的方法。
短语(1-5 个单词)有没有像这样优雅的东西?

val reader = IndexReader.open(IndexProperties.index)
println("Number of docs in index : " + reader.maxDoc())
val t = new Term("text", "братишка")
val df = reader.docFreq(t)
println("DF = " + df)

UPD:我所说的短语是指文档中必须出现的简短术语序列。它们也必须在文本中一个接一个地出现。

Java Code:

String phrase = "your phrase";
Query q = new Queryparser(Version.LUCENE_46, "field", analyzer).parse(phrase);
int df = new IndexSearher(reader).search(q, null).scoreDocs.length;

看起来PhraseQuery是解决方案。

for (termString <- splitted) {
  pq.add(new Term(IndexProperties.textField, termString))
}
pq.setSlop(0)
val collector = TopScoreDocCollector.create(5000, true)
searcher.search(pq, collector)

同样重要的是,splitted : Array[String]必须是分析器标记化的结果。

相关内容

最新更新