У меня есть индекс Solr с набором координат, сохраненным как тип Location
; Я хотел бы запросить документы, где это поле имеет ненулевое значение.
Каков синтаксис запроса для выполнения проверки NOT NULL в поле Location?
У меня есть индекс Solr с набором координат, сохраненным как тип Location
; Я хотел бы запросить документы, где это поле имеет ненулевое значение.
Каков синтаксис запроса для выполнения проверки NOT NULL в поле Location?
Канонический путь таков:
fieldName:[* TO *]
Используя ''
с левой стороны, как предположил Пейдж Кук, возможно, тоже будет работать, но я не верю ему столько, сколько я делаю выше. И так как это относится к полю Location, вам, вероятно, придется сделать это против одного из двух основных фактических полей в сравнении с этим логическим составным полем. Они начинаются с fieldName
и заканчиваются каким-то числовым суффиксом; посмотрите в браузере схемы, чтобы узнать, что такое фактическое имя.
Важная вещь, о которой стоит помнить, заключается в том, что такой запрос для Solr очень дорог, потому что он делает полное сканирование индекса в этом поле. Если у вас много разных значений поля местоположения (в тысячах?), Тогда это очень важно. Если вы сделаете это в запросе фильтра, тогда он будет кэшироваться и, возможно, это будет спорным. Если вы хотите, чтобы этот запрос работал быстро, то во время индекса вы должны индексировать логическое поле, чтобы указать, есть ли значение в этом поле или нет.
Вы можете добавить это в свой запрос fieldname:['' TO *]
. Это будет эквивалент проверки NOT NULL.
Я получил это из сообщения - Solr - Field Not Null Searches
Для поля местоположения (solr.LatLonType) используйте следующий запрос фильтра: -fieldName:[-90,-180 TO 90,180]
(координаты вне этого диапазона все еще недействительны)
Попробуйте это q= !fieldname:NULL
, это будет эквивалентно Fieldvalue
не является NULL.
Отвечая на вопрос STW У меня есть индекс Solr с набором координат, который хранится как тип местоположения; Я хотел бы запросить документы, где это поле имеет ненулевое значение.
Каков синтаксис запроса для выполнения проверки NOT NULL в поле Location?