Соответствует одному значению многозначного поля даты - PullRequest
0 голосов
/ 27 апреля 2018

Скажем, у меня есть поле, определенное в моей схеме и затем проиндексированное как 'dmvf_rab_date_range'

<fieldType name="date_range" class="solr.DateRangeField" multiValued="true" indexed="true"/>
<dynamicField name="dmvf_*" type="date_range" indexed="true" stored="true" multiValued="true" />

А затем индексировать набор значений так, чтобы они возвращались следующим образом:

["[2018-04-07 TO 2018-04-07]",
 "[2018-04-14 TO 2018-04-27]",
 "[2018-05-05 TO 2018-05-05]",
 "[2018-11-03 TO 2018-11-16]",
 "[2018-11-24 TO 2019-01-04]"],

Я пытаюсь сделать запрос так, чтобы я соответствовал одному значению многозначного поля или полностью попадал между одним значением. Но в настоящее время мой запрос, похоже, только частично проверяет, совпадает ли он по любому из значений и возвращает документ, если это так.

Как если бы я запросил:

&fq=dmvf_rab_date_range:[2018-11-10 TO 2018-11-24]

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

1 Ответ

0 голосов
/ 27 апреля 2018

Оператор по умолчанию для DateRangeFields - Intersects. Поскольку ваш диапазон запросов пересекается / перекрывается с [2018-11-03 TO 2018-11-16], вы получаете удар.

Вы можете настроить оператора через localparam :

&fq={!field f=dmvf_rab_date_range op=Contains}[2018-11-10 TO 2018-11-24]

Это даст вам совпадение, если индексированный диапазон содержит диапазон запроса. У вас также есть оператор Within - он дает вам диапазоны, попадающие в диапазон запроса (я не совсем уверен, что вы хотели).

...