Удалить просроченные записи в синтаксисе запроса - PullRequest
1 голос
/ 04 марта 2010

У меня проблема с синтаксисом запроса solr (я думаю) с solr 1.4. Я пытаюсь исключить просроченные записи из запроса Solr. Однако, если у записи нет записи об истечении срока действия, я хотел бы также вернуть эту запись. Э.Г.

Чтобы получить только список записей, срок действия которых не истек, я использую этот запрос:

expirydate:[NOW/DAY TO *]

Тогда я подумал получить список записей, у которых нет даты истечения срока действия, которую я могу использовать

-expirydate:[* TO *]

Оба запроса работают самостоятельно. То есть первый запрос возвращает 3 записи. Второй запрос возвращает 921 запись. Однако, когда я объединяю 2 запроса вместе с ИЛИ , я получаю 0 записей:

expirydate:[NOW/DAY TO *] OR -expirydate:[* TO *]

Есть идеи, что я делаю не так?

Спасибо

Dave

Ответы [ 2 ]

2 голосов
/ 04 марта 2010

Не уверен на 100%, но я не думаю, что вы можете объединить ИЛИ с оператором отрицания таким образом.

Попробуйте добавить фиктивное поле с одинаковым значением в каждый документ и попробуйте

enddate:[NOW/DAY TO *] OR (dummy:yes -enddate:[* TO *])
1 голос
/ 15 июня 2012

Мне просто пришлось заняться этой проблемой, я приступил к реализации утвержденного ответа, но потом понял, что могу просто сделать это:

- срок действия истек: [* TO NOW]

Это сработало независимо от того, установлена ​​ли дата истечения срока действия документа.

...