qasta / russianmorphology

Automatically exported from code.google.com/p/russianmorphology
0 stars 0 forks source link

Ошибка ArrayIndexOutOfBoundsException[null] для последовательности 'пм' #12

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Если в тексте есть последовательность 'пм' 
то возникает ошибка ArrayIndexOutOfBoundsException[null] 

Original issue reported on code.google.com by maxkaza...@gmail.com on 21 May 2012 at 10:15

GoogleCodeExporter commented 9 years ago
Проблема возникает когда результат работы 
RussianLuceneMorphology пересылается в фильтр 
EnglishLuceneMorphology. После прохождения 
RussianLuceneMorphology 'пм' превращается в пустой 
токен "", и когда этот пустой токен попадает 
в EnglishLuceneMorphology, то он вызывает 
ArrayIndexOutOfBoundsException. Воспроизвести это можно 
так:

        LuceneMorphology russianLuceneMorphology = new RussianLuceneMorphology();
        LuceneMorphology englishLuceneMorphology = new EnglishLuceneMorphology();

        MorphologyAnalyzer russianAnalyzer = new MorphologyAnalyzer(russianLuceneMorphology);
        TokenStream stream = russianAnalyzer.reusableTokenStream("name", new FastStringReader("тест пм тест"));
        MorphologyFilter englishFilter = new MorphologyFilter(stream, englishLuceneMorphology);

        while (englishFilter.incrementToken()) {
            System.out.println(englishFilter.toString());
        }

Original comment by imo...@gmail.com on 21 May 2012 at 1:23

GoogleCodeExporter commented 9 years ago
А почему 'пм' превращается в пустой токен? А, 
например, 'мп','мм','пмп' ... не превращаются в 
пустой токен?

Original comment by maxkaza...@gmail.com on 21 May 2012 at 1:34

GoogleCodeExporter commented 9 years ago
Как исправить?? Тоже столкнулся с 
проблемой, в базе раз 10 встречается " пм ". 
Вылетает при перестроении индекса...

Original comment by Evgeny...@gmail.com on 2 Oct 2012 at 5:10

GoogleCodeExporter commented 9 years ago
Я просто отключил EnglishLuceneMorphology

Original comment by maxkaza...@gmail.com on 2 Oct 2012 at 5:14

GoogleCodeExporter commented 9 years ago
Да, это поможет, но нужно в скором времени и 
EnglishLuceneMorphology использовать совместно...как 
вариант, если поменять местами, чтобы 
сначала отрабатывал EnglishLuceneMorphology и 
результат пересылался в RussianLuceneMorphology будет 
ли работать?

Original comment by Evgeny...@gmail.com on 2 Oct 2012 at 6:17

GoogleCodeExporter commented 9 years ago
Не, там будет другая кобинация. Надо 
перекомпиливать плагин с учетом пустой 
строки. Я не джавист и мне придется 
потратить немало времени для этого. 

Original comment by maxkaza...@gmail.com on 2 Oct 2012 at 6:29

GoogleCodeExporter commented 9 years ago
Я хоть и с джавой на Вы, но пришлось править. 
Поправил метод incrementToken в классе MorphologyFilter. 
Поставил проверку на пустую строку и 
перекомпилировал этот класс. Все 
заработало! Вдруг кому пригодиться, 
прикрепляю файл morph-1.1-SNAPSHOT.jar иммено он 
используется у меня в плагине для ElasticSearch 
от Игоря Мотова.

Original comment by Evgeny...@gmail.com on 2 Oct 2012 at 8:36

Attachments:

GoogleCodeExporter commented 9 years ago
В плагине для Elasticsearch я поправил это так:

Original comment by imo...@gmail.com on 2 Mar 2013 at 11:12

Attachments: