Создание Lucene Analyzer - PullRequest
       33

Создание Lucene Analyzer

1 голос
/ 15 января 2012

Я хочу сделать немного базового иврита stemming.

Все примеры пользовательских анализаторов, которые я мог найти, всегда объединяют другие анализаторы и и фильтры, но никогда не выполняют никакой обработки на уровне строк.

Что мне нужно сделать, например, если я хочу создать анализатор, который для каждого термина в потоке, который он получает, испускает один или два термина по следующим правилам: если входящий термин начинается с чего-то другого, то после «а» он должен быть передан как есть. если входящий термин начинается с «а», то должны быть выбраны два термина: исходный и второй без начального «а» и с более низким усилением.

Так что если у документа есть «помощь в прочем», он вернет «помощь», «прочь» и «путь ^ 0,8».

Какие методы анализатора мне следует переопределить для этого? (Указатель на подобный пример природы будет очень полезен).

Спасибо

1 Ответ

1 голос
/ 16 января 2012

Вот один пример: http://www.java2s.com/Open-Source/Java-Document/Search-Engine/lucene/org/apache/lucene/wordnet/SynonymTokenFilter.java.htm

Коротко сканируя код, кажется, он должен испустить дополнительные токены в той же позиции (синоним). Это достигается путем переопределения incrementToken (), который вам придется сделать для вашей задачи (поддерживать стек следующих токенов, возвращая один за другим).

Если этот пример не работает, просто попробуйте найти тот, который объясняет, как вы можете реализовать фильтр синонимов с Lucene, он почти идентичен вашей проблеме. Книга Lucene in Action имеет хороший пример этого, код доступен здесь: http://www.manning.com/hatcher3/LIAsourcecode.zip, класс SynonymFilter.

...