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

Как указать значение OR в запросе Apache Solr?

Последний способ решить это для меня - спросить StackOverflow.

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

Теоретически этот запрос должен сработать.

Вот некоторая информация:

Запрос: (имя: john) → Количество результатов: 15383//Johns

Запрос: (имя: {* TO *}) → Количество результатов: 61013//Люди, у которых есть имя

Запрос: - (имя: {* TO *}) → Счетчик результатов: 216888//Люди, у которых нет имени

Теперь, когда я использую первый и третий запрос в одном и том же запросе с оператором OR, я ожидаю получить результаты (216888 + 15383). Но SOLR дает результаты 15383, просто игнорирует эффект третьего запроса:

Запрос: + ((name: john) (- (name: {* TO *})))//Это запрос, который я использовал.

Является ли это ошибкой Solr или я ошибаюсь в запросе? Объединение двух результатов запроса является дополнительным решением, но я не хочу делать дополнительную реализацию кода, если бы мог сделать это с помощью простого запроса.

Любая помощь будет оценена.

4b9b3361

Ответ 1

(-name:[* TO *] AND *:*) OR name:john

Ответ 2

Вы также можете использовать его так.

&fq=name:john OR !name:['' TO *]

Ответ 3

попробуйте следующий запрос -

q=(name:john OR -(name:[* TO *]))