Lucene: как мне найти позиции попадания запроса в исходном содержимом? - PullRequest
0 голосов
/ 07 декабря 2011

Предположим, у меня есть коллекция документов, которую я проиндексировал в Lucene.Я отправляю запрос и получаю хиты.Теперь я хочу найти, где в конкретном документе происходит попадание (я).Я знаю, что могу использовать классы подсветки Lucene для получения соответствующих фрагментов.Но как я могу узнать, где именно эти фрагменты появляются в исходном содержимом?

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

Спасибо!

1 Ответ

0 голосов
/ 07 декабря 2011

Не фактический ответ, просто несколько ссылок на решение аналогичной проблемы.

Прежде всего, здесь вы можете увидеть фактические результаты выделения (обратите внимание, что were выделено, хотя am было в запросе. Стемминг является дополнительной функцией этой реализации): http://hunglish.hu/search?huSentence=&enSentence=I%20am%20highlighted&size=20&page=2&doc.genre=-10

Вот источник. Посмотрите на эти методы: highlightField, highlightBisen http://code.google.com/p/hunglish-webapp/source/browse/trunk/src/main/java/hu/mokk/hunglish/lucene/Searcher.java

Отказ от ответственности: Я написал это некоторое время назад, это не очень хороший код, и он содержит ошибки в особых случаях: Существует открытая проблема, связанная с выделением . Кроме того, он использует версию 3.2.0 lucene-highlighter, которая, возможно, не самая новая.

В любом случае, я надеюсь, что если вы посмотрите на то, как это работает, это поможет вам написать лучшее или хотя бы что-то, что работает, как ожидалось.

...