Получить текст в запросе близости Lucene

Я использую Lucene для индексации набора предложений. Мои запросы с двумя "сущностями", и я создаю запрос о близости, как это:

"EntityA EntityB"~22 

и я хочу получить все предложения, которые содержат эти две сущности в максимальном диапазоне 22 символов. Теперь я хочу использовать Lucene Highlighter для извлечения слов между двумя сущностями. Я использую подобный код для разделения содержимого на фрагменты, но я не знаю, как установить фрагмент в точную точку между двумя объектами.

for (int i = 0; i < numTotalHits; i++) {
            int id = hits[i].doc;
            Document doc = searcher.doc(hits[i].doc);
            String text = doc.get("content");
            TokenStream tokenStream = TokenSources.getAnyTokenStream(searcher.getIndexReader(), id , "content", analyzer);
            String[] frag = getFragmentsWithHighlightedTerms(analyzer, query, "content", text, 10, 10);

            for (int j = 0; j < frag.length; j++) {
                    System.out.println((frag[j].toString()));
            }

Моя цель, чтобы получить текст внутри объекта, например:

entity1 --> Canada
entity2 --> Ottawa
sentence --> Natural Resources Canada, Canadian Forest Service, Ottawa.
result --> , Canadian Forest Service, 

1 ответ

Насколько мне известно, синтаксис "foo bar"~22 создаст запрос фразы с 22-ю помпой. 22 указывает, что может быть не более 22 ходов, чтобы расположить 2 токена рядом друг с другом в том же порядке, что и в запросе. 22 хода будут включать в себя переключение мест с другими токенами и не будут иметь отношения к длине токена (в данном контексте токен означает слово).

Как только вы получите релевантный результат с помощью фразы, я не думаю, что есть какой-либо надежный способ получить весь фрагмент между двумя объектами.

Если бы вы могли построить объект запроса самостоятельно, я бы на самом деле пошел с запросом регулярного выражения, так как вы уже упомянули диапазон из 22 символов, и остановился на этом. Затем вы можете легко обрезать 2 объекта из выделенного текста.

Другие вопросы по тегам