Я пытаюсь написать запрос lucene для фильтрации некоторых данных в RavenDB. Некоторым из документов в этой конкретной коллекции присваивается порядковый номер, а допустимые диапазоны не являются непрерывными (например, один диапазон может быть от 100-200, а другой от 1000 до 1400). Я хочу запросить RavenDB, используя Raven Studio (v2.5, клиент Silverlight) для извлечения всех документов, имеющих значения за пределами указанных пользователем диапазонов.Подзапрос диапазона Lucene.Net не возвращает ожидаемые результаты (связанный с RavenDB)
Это чрезмерно упрощена структура документа:
{
ExternalId: something/1,
SequentialNumber: 12345
}
Чтобы проверить, я добавил 3500 документов, все из которых имеют SequentialNumber
, который находится внутри одной из двух следующих диапазонов: 123-312
и 9000-18000
, за исключением одного, что имеет 100000123
. Поле ExternalId
является ссылкой на родительский документ, и для этого теста все документы имеют поле something/1
. Это запрос Lucene я придумал:
ExternalId: something/1 AND NOT
(SequentialNumber: [123 TO 321] OR SequentialNumber: [9000 TO 18000])
Выполнение запроса в студии RavenDB возвращает все документы, где SequentialNumber
находится не в 123-321
диапазоне. Я ожидаю, что он вернет документ, который имеет 100000123
как SequentialNumber
. Я пытался помочь Google, но до сих пор я не нашел ничего, чтобы направить меня в правильном направлении.
Что я делаю неправильно?
Спасибо! Это решило одну проблему. Поскольку поле отмечено в индексе как Long ('Sort (x => x.SequentialNumber, SortOptions.Long)'), мне пришлось изменить Ix на Lx. Теперь, если я запускаю запрос без 'NOT' (' ExternalId: something/1 AND (SequentialNumber_Range: [Lx123 TO Lx321] ИЛИ SequentialNumber_Range: [LX9000 TO LX18000])), я получаю ожидаемые результаты: каждый документ, кроме одного который находится за пределами диапазонов. То, что я, похоже, не могу сделать, - это заставить Lucene выполнять «НЕ», чтобы он возвращал документы за пределы диапазона. Является ли это ограничением Lucene вне сферы действия RavenDb? – enriquein
Nevermind, после нескольких минут возиться в Raven Studio, он, наконец, вернул ожидаемый результат. Не уверен, что там произошло, это, должно быть, был пользовательский интерфейс. Большое спасибо за помощь! – enriquein