Lucene TermPositionVector и получение терминов в индексных местоположениях - PullRequest
0 голосов
/ 20 августа 2010

Я выгляжу как сумасшедший из-за ответа на этот вопрос, но я все еще в неведении:

я использую

int[] getTermPositions(int index)

TermPositionVector У меня есть для поля (которое было установлено для хранения смещений и позиций), чтобы получить позиции терминов терминов, которые мне интересно выделить в качестве ключевого слова в контексте.

Вопрос: чему соответствуют эти позиции? Очевидно, не

String[] getTerms()

, который возвращается интерфейсом TermFreqVector, поскольку он содержит только необработанное количество моих терминов.

То, что я ищу, - это способ получить «токенизированный» массив моего поля, чтобы я мог затем вытянуть окружающие термины вокруг значений индекса, возвращаемых getTermPositions(int index)

Помощь? Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 22 августа 2010

Ну, это выполнит то, что я хотел:

http://lucene.apache.org/java/3_0_2/lucene-contrib/index.html#highlighter

0 голосов
/ 20 августа 2010
int[] getTermPositions(int index)

возвращает массив позиций сроков термина i. Вы можете получить индекс, используя

int indexOf(String term)

метод TermFreqVector. Термин «позиции» - это позиции (с термином в качестве единицы), в которых происходит данный термин. Например,

// source text:
// term position 0   1     2     3   4     5    6   7    8
//               the quick brown fox jumps over the lazy dog

// terms:
// term index 0     1   2   3    4    5    6     7
//            brown dog fox jump lazy over quick the

// Suppose we want to find the positions where "the" occurs

int index = termPositionVector.indexOf("the"); // 7
int positions = termPositionVector.getTermPositions(index); // {0, 6}
...