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 *]),

Другие вопросы по тегам