Список "токенов" на Lucene 3 - PullRequest
       4

Список "токенов" на Lucene 3

5 голосов
/ 12 октября 2010

Я новичок в Lucene, я начал изучать ветку версии 3, и есть одна вещь, которую я не понимаю (очевидно, потому что у меня нет опыта в этой области).

В Lucene 2.9, если бы я хотел получить список токенов, я бы создал ArrayList класса Token, например, ArrayList. Это довольно интуитивно понятно для меня, и концепция токена очень ясна.

Теперь, когда использование класса Token не поощряется в пользу API на основе атрибутов, нужно ли мне создавать свой собственный класс для инкапсуляции нужных мне атрибутов? Если да, разве это почти не воссоздает класс Token Lucene?

Я делаю урок для тестирования анализаторов, и, думаю, наличие списка получаемых токенов облегчает тестирование.

Любая помощь будет оценена;) Спасибо!

Ответы [ 3 ]

2 голосов
/ 12 октября 2010

Используйте класс TermAttribute:

TokenStream stream = analyzer.tokenStream("field", "text");
TermAttribute termAttr = stream.getAttribute(TermAttribute.class);
while (stream.incrementToken()) {
    String token = termAttr.term();
}
2 голосов
/ 13 октября 2010

Согласно Token Javadoc : «Несмотря на то, что больше нет необходимости использовать Token, с новым API TokenStream его можно использовать как вспомогательный класс, который реализует все атрибуты, что особенно полезно дляперейти от старого к новому API TokenStream. "

Я предлагаю вам продолжать использовать токен.Это соответствует описанию выше.

1 голос
/ 12 октября 2010

Я думаю, вы можете сделать что-то вроде этого:

TokenStream tkst = analyzer.tokenStream("field", "text");<br> Token token = tkst.getAttribute(Token.class);<br> while (tkst.incrementToken()) {<br> // Do something with token.<br> }

Соответствующая документация находится в пакете анализа: http://lucene.apache.org/java/3_0_2/api/all/org/apache/lucene/analysis/package-summary.html

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