Частота терминов в поле для всех проиндексированных документов в Lucene - PullRequest
1 голос
/ 23 июня 2011

Я ищу способ найти термин частоты в похожих полях в 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)

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...