Поиск диапазона дат или нулевого / нулевого поля в Solr

Я хочу выполнить поиск в текстовом поле в Solr. Я хочу вернуть все совпадения в диапазоне или без значения. Оба ищут слово независимо друг от друга:

myfield:[start TO finish]
-myfield:[* TO *]

Первый возвращает все совпадения в диапазоне. Второй возвращает все совпадения, не имеющие значения для поля «myfield». Проблема заключается в сочетании этих двух.

Это не возвращает совпадений:

myfield:[start TO finish] OR -myfield:[* TO *]

Это возвращает совпадения между началом и концом, но не нулевые записи:

myfield:[start TO finish] OR (-myfield:[* TO *])

person Alistair Doulin    schedule 27.08.2009    source источник
comment
Попробуйте это.   -  person Mauricio Scheffer    schedule 28.08.2009
comment
Отлично, спасибо. Для ясности, точное решение: - (- myfield: [от начала до конца] AND myfield: [* TO *])   -  person Alistair Doulin    schedule 28.08.2009
comment
Кто-нибудь зарегистрировал это как ошибку в Solr JIRA? Я не вижу причин, по которым версия с позитивной логикой не должна работать.   -  person samkass    schedule 06.09.2013
comment
@samkass: согласен, Solr должен это обнаружить и внутренне переписать выражение на то, что он может обработать.   -  person Mauricio Scheffer    schedule 06.09.2013


Ответы (2)


Решение от Маурисио Шеффера работало у меня, пока я не включил его в полный запрос. Сам запрос может содержать до трех полей с диапазонами, и где-то посередине Solr не смог его обработать. Мне удалось решить эту проблему с помощью следующего запроса:

(myfield:[start TO finish] OR (*:* NOT myfield:[* TO *]))

Он проснулся даже в моем сложном запросе, так что, возможно, это поможет кому-то другому.

person Svetlana    schedule 26.05.2014

Я согласен с решением Маурисио Шеффера.

Если это может помочь, я преобразовал свой первоначальный запрос:

DocSource:"P" OR ( DocSource:"E" AND (MyDate:[NOW TO *] OR -MyDate:[* TO *] ) )

To

DocSource:"P" OR ( DocSource:"E" AND -( -MyDate:[* TO NOW] AND MyDate:[* TO *] ) )

Первый запрос не выполнялся должным образом в Solr 4.1.

person Sebastien Lorber    schedule 20.02.2013
comment
Привет, @ sebastien-lorber - запрос проверял, что MyDate находится в будущем или имеет значение NULL, верно? - person Jono; 17.06.2020