Lucene Jackrabbit - PullRequest
       36

Lucene Jackrabbit

1 голос
/ 08 декабря 2010

Недавно мы добавили поддержку Lucene (2.4.1) в наше приложение, которое работало с Jackrabbit (1.6.2).Мы сделали все так, как описано в уроке по крольчонку.И все работает почти нормально.Но я заметил какое-то странное поведение и не могу найти никаких документов по этому поводу.Я решил спросить вас об этом.

Например: у меня есть следующий текст в узле (jcr: content) в свойстве jcr: data

The quick brown fox jumps over the lazy dog 
!@#$%^& 
travmik! 
tra!vmik

Мой запрос XPath выглядит следующим образом:

String query = "root/element(*,my:documentBody)
                        [jcr:contains(*/*/element(*),'*" + param +"*')]";

Затем я пытаюсь найти:

"q", "qu", "qui", "quic", "quick", "k", "ck", "ick"," uick "," quick brown fox "," quick fox "," tra "," travmik "," mik "- все найдено в порядке

" tra! vmik "," travmik! ","! @ # $ "- ничто

И да, я избежал всех специальных символов из этого .

Что я сделал не так?

Ps Iесть еще один вопрос - в Lucene docs говорится, что «Вы не можете использовать символ * или? в качестве первого символа поиска», но я использую, и это работает.Почему?

1 Ответ

0 голосов
/ 12 декабря 2010

Я нашел проблему.Было некоторое недопонимание с экстракторами, которые используются в крольчонке для индексации контента.Я не хочу вдаваться в подробности, но могу сказать, что этот фрагмент кода от одного из экстракторов является причиной всех моих проблем:

if (!Character.isLetterOrDigit(c)) {
    if (!space) {
        space = true;
        buffer.append(' ');
        continue;
    }
    continue;
}

Если кому-то это интересно, я могу объяснитьподробнее.

...