Lucene StandardAnalyzer 3.5 TypeAttribute - PullRequest
0 голосов
/ 27 декабря 2011

Я недавно заметил, что поведение Lucene StandardAnalyzer несколько изменилось с версии 3.1. Конкретно, 3.0 и предыдущие версии распознавали электронную почту, IP-адреса, названия компаний и т. Д. Как отдельные лексические типы, а более поздние версии - нет.

Например, для входного текста: "example@mail.com 127.0.0.1 H & M ", анализатор 3.0 распознает следующие типы:

1: example@mail.com: 0-> 16: <<strong> EMAIL >

2: 127.0.0.1: 17-> 26: <<strong> ВЕДУЩИЙ >

3: ч & м: 27-> 30: <<strong> КОМПАНИЯ >

Однако версия 3.1 и более поздние дают следующий вывод для того же входного текста:

1: пример: 0-> 7: <<strong> АЛЬФАН >

2: mail.com: 8-> 16: <<strong> ALPHANUM >

3: 127.0.0.1: 17-> 26: <<strong> NUM >

Мой вопрос: как я могу реализовать старое поведение StandardAnalyzer с более новой версией библиотеки Lucene? Существуют ли какие-либо стандартные фильтры TokenFilter, которые могут помочь мне достичь этого, или мне нужно реализовать пользовательские фильтры?

1 Ответ

1 голос
/ 27 декабря 2011

См. Javadocs для StandardAnalyzer: Начиная с 3.1, StandardTokenizer реализует сегментацию текста в Юникоде .... ClassicTokenizer и ClassicAnalyzer являются реализациями StandardTokenizer и StandardAnalyzer до 3.1.

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

...