Сложный запрос SOLR, включающий НЕ и ИЛИ

У меня есть несколько довольно сложных требований к поиску SOLR, которые мне нужно выполнить в моей базе данных с теговым контентом. Мне нужно сначала отфильтровать базу данных по тем результатам, которые соответствуют моим тегам фильтра. Любые из этих результатов, которые имеют тег из черного списка, должны быть удалены, если они также не содержат теги из белого списка.

Допустим, я хочу получить все документы с тегами «лес» или «охрана». Но я хочу исключить документы с тегами «Великобритания» или «Европа», если они также не отмечены тегами «Африка» или «Азия». Я попытался написать это в своем SOLR-запросе:

tag:((forest OR conservation) AND (africa OR asia OR !uk OR !europe))

Логика кажется мне разумной, но запрос не работает. У меня есть 46 документов с тегами «лес» или «сохранение», один из которых также помечен как «Азия», и ни один из них не помечен как «Великобритания» или «Европа», но запрос не возвращает результатов.

Я также видел информацию о параметре fq (отфильтрованный запрос) для SOLR, который звучал так, как будто он может быть полезен. Но и это, похоже, не помогло. Кажется, что комбинация НЕ и ИЛИ приводит к поломке SOLR.

Возможно ли то, что я пытаюсь сделать? Моя логика где-то ошибочна? Кстати, это относится к SOLR 1.4 - если эта проблема уже где-то решена...

Спасибо за любой совет!

5
задан vitch 21 May 2012 в 16:24
поделиться