Подтвердить что ты не робот

Поиск диапазона дат или поля null/no в Solr

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

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

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

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

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

Для

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

Первый запрос не выполнялся, как ожидалось, в Solr 4.1.