Как работает диапазонный запрос, когда в термине запроса есть специальные символы? - PullRequest
0 голосов
/ 08 апреля 2020

Направлено это , это

Запрос:

rang:[16-03-08 TO 16-04-08]

Я используя standard tokenizer and lower case filter для поля имени. Тип поля: text.

Поскольку это стандартный токенизатор, 16-03-08 будет токенизирован на 16, 03, 08, аналогично другому 16, 04, 08

Как с этим работает запрос диапазона?

1 Ответ

0 голосов
/ 10 апреля 2020

Вот пример данных, которые я использовал для иллюстрации.

{
    "id":"1",
    "RangeField":"16-03-08",
    "DateField" :"2018-11-21"
},
{
    "id":"2",
    "RangeField":"16-04-08",
    "DateField" :"2019-01-11"
},
{
    "id":"3",
    "RangeField":"16-06-08",
    "DateField" :"2019-04-19"
},
{
    "id":"4",
    "RangeField":"16-07-08",
    "DateField" :"2019-08-24"
},
{
    "id":"5",
    "RangeField":"16-08-08",
    "DateField" :"2019-11-29"
}

Вот поля, определенные в schema.xml

<field name="RangeField" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="DateField" type="date" indexed="true" stored="true" multiValued="false"/>

Вот запрос, выполненный

http://localhost:8983/solr/TestDemo4/select?fl=RangeField,DateField&q=RangeField:[16-03-08%20TO%2016-06-08]

Пожалуйста, обратитесь к скриншоту для ответа.

enter image description here

Вот второй запрос в поле даты.

http://localhost:8983/solr/TestDemo4/select?fl=RangeField,DateField&q=DateField:[2018-11-08T00:00:00Z%20TO%202019-08-30T23:59:59Z]

Пожалуйста, обратитесь к скриншоту для ответа.

enter image description here

Если у вас есть данные numberi c, тогда вместо строки используйте int как fieldtype так что это не создаст проблемы во время сортировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...