Я ищу способ найти термин частоты в похожих полях в Lucene.
Допустим, мои поля следующие для данного документа:
Document1:
/ фильм / актер / имя0: Том
/ фильм / актер / имя1: Том Том
/ фильм / актер / имя2: Том Том Том
/ фильм / актер / псевдоним0: Том Том Том
/ фильм / актер / псевдоним1: Том Том
Документ2:
/ фильм / актер / имя0: Том Том Том
/ фильм / актер / имя1: Том
/ фильм / актер / псевдоним0: Том
Документ 3:
/ фильм / актер / имя0: Том
/ фильм / актер / псевдоним0: Том Том
/ фильм / актер / псевдоним1: Том Том Том
Я хочу следующий вывод:
/ фильм / актер / имя: 16 (сумма по всем типам nameX)
/ movie / actor / nickname: 11 (тот же алгоритм, что и выше).
У меня есть способ эффективно перебирать все nicknameX и nameX, поэтому мне там не нужна помощь. Мне нужна помощь в поиске термина частоты.
Прямо сейчас для данного поля (скажем, / фильм / актер / имя) я сначала создаю новый termdocs, просматриваю / movie / actor / name0, ..., / movie / actor / namen, создаю новый термин с i-м именем поля и заданным значением поля (в приведенном выше примере значение поля было «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;
Different [i] - это i-ое отдельное поле (например, / movie / actor / namei)
Спасибо!