如何使用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:通过词组我指的是文档中必须的短序列。他们必须在文本中一个接一个地去。
答案 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]
必须是分析仪标记化的结果也很重要。