问题描述
|
我正在寻找一种在Lucene的类似字段中查找频率术语的方法。
假设我的字段是给定文档的以下字段:
文件1:
/ movie / actor / name0:汤姆
/ movie / actor / name1:汤姆汤姆
/ movie / actor / name2:汤姆汤姆汤姆
/ movie / actor / nickname0:汤姆汤姆汤姆
/ movie / actor / nickname1:汤姆汤姆
文件2:
/ movie / actor / name0:汤姆汤姆汤姆
/ movie / actor / name1:汤姆
/ movie / actor / nickname0:汤姆
文件3:
/ movie / actor / name0:汤姆
/ movie / actor / nickname0:汤姆汤姆
/ movie / actor / nickname1:汤姆汤姆汤姆
我想要以下输出:
/ movie / actor / name:16(所有nameX类型的总和)
/ movie / actor / nickname:11(与上述算法相同)。
我有一种方法可以有效地遍历所有的nicknameX和nameX,所以我在那里不需要帮助。我需要寻找频率一词的帮助。
现在,对于给定的字段(例如/ movie / actor / name),我首先创建一个新的termdocs,然后遍历/ movie / actor / name0,...,/ movie / actor / namen,并使用第一个字段名和给定的字段值(在上面的示例中,字段值为\“ tom \”),将termdocs的术语设置为该术语,并遍历每个文档计算freq()
明确地(针对一个字段):
TermDocs td = is.getIndexReader().termDocs();
for(int i=tmp2; i<=tmp; i++){
Term thisterm = new Term(distinctf[i],fv);
td.seek(thisterm);
while(td.next()){ //loop through <document,frequency> enumeration (all docs in collection)
sum+=td.freq();
}
}
return sum;
unique [i]是第i个不重复字段(例如/ movie / actor / namei)
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)