Lucene StandardAnalyzer 3.5 Тип Атрибут

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

Например, для вводимого текста: «[email protected] 127.0.0.1 H&M» анализатор 3.0 распознает следующие типы:

1: [email protected]: 0-> 16: ‹EMAIL>

2: 127.0.0.1: 17-> 26: ‹HOST>

3: h & m: 27-> 30: ‹КОМПАНИЯ>

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

1: пример: 0-> 7: ‹БУКВЕННЫЙ>

2: mail.com: 8-> 16: ‹БУКВЕННЫЙ>

3: 127.0.0.1: 17-> 26: ‹ЧИСЛО>

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


person Bojana Popovska    schedule 27.12.2011    source источник


Ответы (1)


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

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

person Robert Muir    schedule 27.12.2011