Lucene Boolean Query для неизученных полей - PullRequest
1 голос
/ 25 июня 2010

Использование RavenDB для выполнения запроса по индексу Lucene.

Этот запрос хорошо разбирается: X: [[a]] И Y: [[b]] ​​И Z: [[c]]

Однако этот запрос дает мне исключение синтаксического анализа: X: [[a]] И Y: [[b]] ​​И Z: [[c]] И P: [[d]]

"Lucene.Net.QueryParsers.ParseException: невозможно проанализировать '(AND)': найдено \" \ "AND"

Я пробовал это на комплексном индексе и простых случаях воспроизведения, и тот же результат, кажется, когда вы идете за три, и это взрывается. Я использую [[]] и не анализирую, потому что я хочу точные совпадения (также иногда значения содержат пробелы и т. Д.), А из RavenDB у меня очень мало контроля над индексацией.

Мне интересно, как я могу переписать запрос, чтобы избежать исключения разбора?

Ответы [ 2 ]

2 голосов
/ 08 июля 2010

Это теперь исправлено в последних сборках RavenDB. См. эту тему для дополнительной информации.

0 голосов
/ 02 июля 2010

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

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

...