Как разобрать запросы lucene String, которые используют spanNot и spanNear - PullRequest
0 голосов
/ 09 января 2012

Если у меня есть следующий запрос lucene в виде строки, возможно ли использовать существующую библиотеку lucene для ее анализа?

+ spanNot (spanNear ([текст: слово1, текст: слово2], 10, правда), текст: mydelimiter)

Я использую Lucene 3.0.0. Я попробовал QueryParser в ядре, и он не выдает ошибку, но создает неправильный BooleanQuery. Я также пробовал StandardQueryParser (также дает BooleanQuery) в lucene-contrib и org.apache.lucene.queryParser.surround.parser.QueryParser, что приводит к ошибке (Encountered "" ("" ("" ....)

Является ли мой единственный выбор для создания эквивалентного запроса в коде?

(К вашему сведению, моя общая цель - найти термины в любом порядке в одном и том же предложении, заменив конечные периоды предложения на «mydelimiter» в документе перед индексацией.)

1 Ответ

0 голосов
/ 09 января 2012

Из Lucene в книге действий:

QueryParser не поддерживает ни один из типов SpanQuery, но окружающий QueryParser в модулях Contribute Lucene делает.

Вот пример синтаксиса синтаксического анализатора окружения:

aa NOT bb NOT cc – same effect as: (aa NOT bb) NOT cc
and(aa,bb,cc) – aa and bb and cc
99w(aa,bb,cc) - ordered span query with slop 98
99n(aa,bb,cc) – unordered span query with slop 98

Похоже, вам придется либо изменить синтаксис, чтобы он соответствовал этому, и использовать синтаксический анализатор окружения, либо расширить QueryParser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...