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

时间:2014-01-08 21:12:22

标签: lucene information-retrieval

如何使用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:通过词组我指的是文档中必须的短序列。他们必须在文本中一个接一个地去。

2 个答案:

答案 0 :(得分:0)

Java代码:

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;

答案 1 :(得分:0)

看起来像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]必须是分析仪标记化的结果也很重要。