Как ИЛИ нулевое значение в запросе Apache Solr? - PullRequest
11 голосов
/ 06 октября 2011

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

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

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

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

Запрос: (имя: Джон) -> Количество результатов: 15383 // Johns

Запрос: (имя: {* TO *}) -> Количество результатов: 61013 // Люди с именем

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

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

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

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

Любая помощь будет признательна.

Ответы [ 3 ]

21 голосов
/ 07 февраля 2012

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

1 голос
/ 09 февраля 2015

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

&fq=name:john OR !name:['' TO *]
0 голосов
/ 06 октября 2011

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

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