Странное поведение класса Lucene SpanishAnalyzer с акцентированными словами - PullRequest
2 голосов
/ 24 ноября 2011

Я использую класс SpanishAnalyzer в Lucene 3.4. Когда я хочу разобрать акцентированные слова, у меня странный результат. Если я, например, проанализирую эти два слова: «comunicación» и «comunicacion», то получу стебли «comun» и «comunicacion». Если вместо этого я проанализирую слова «маратон» и «маратон», я получу одинаковые основы для обоих слов («маратон»).

Так что, по крайней мере, на мой взгляд, очень странно, что одно и то же слово "comunicación" дает разные результаты в зависимости от того, акцентировано оно или нет. Если я найду слово «comunicacion», я получу один и тот же результат независимо от того, ударение оно или нет.

Код, который я использую, следующий:

SpanishAnalyzer sa = new SpanishAnalzyer(Version.LUCENE_34);
QueryParser parser = new QueryParser(Version.LUCENE_34, "content", sa);
String str = "comunicación";
String str2 = "comunicacion";
System.out.println("first: " + parser.parse(str)); //stem = comun
System.out.println("second: " + parser.parse(str2)); //stem = comunicacion

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

Пожалуйста, кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 28 июня 2012

Проверяли ли вы, какой токенизатор и токен-фильтры использует SpanishAnalyzer? Есть что-то под названием ASCIIFoldingFilter. Попробуйте разместить его перед StemFilter. Это удалит акценты

...