Solr OR запрос не возвращает никакого результата, в то время как запрос возвращает результат отдельно
Я пытаюсь выполнить запрос ИЛИ на Solr 6.6, например, "field: [x TO ] OR -field: [ TO *]", что означает большее или равное некоторому значению или нулю. Даже оба поля: [x TO ] и -field: [ TO *] имеют наборы результатов по отдельности, этот запрос ИЛИ возвращает пустой набор. Когда я использую скобки, такие как "(field: [x TO ]) OR (-field: [ TO *])", он возвращает результат поля: только [x TO *]. Можете ли вы объяснить мне, что проблема с этим запросом здесь? Спасибо за любую помощь.
1 ответ
Это вызвано второй частью вашего второго утверждения (OR -field:[x TO *]
). Думать о -
оператор вычитает второй набор из первого - но проблема здесь в том, что у вас нет ничего, чтобы вычесть второй набор из.
Когда -field:foo
запрос является единственной частью запроса, Solr начинается с полного набора всех документов, так что в некотором смысле запрос *:*
(все документы) добавляется к вашему запросу. Когда ваш запрос находится позже в наборе предложений, это уже не так - он только добавляется к первому предложению (если вообще).
Чтобы решить это, будьте явными: OR (*:* -field:[x TO *])
,