Исключить поля с нулевыми значениями в запросах SOLR

Я пытаюсь сделать URL-запрос к API, который использует SOLR для запросов.

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

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

Например, каждая запись содержит поле с именем tags, которое является массивом тегов. тег может, например, быть словом test.

Я попытался сделать -tags:[* TO *], и это приводит ко всем наборам данных, где теги являются нулевыми, которые будут возвращены.

Я также пробовал теги: [* TO *], который возвращает все данные, где теги являются нулевыми и где теги фактически установлены.

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

2 ответа

Ваш вопрос немного сбивает с толку, потому что вы используете такие термины, как "извлечение данных" и "извлечение полей", которые могут сбивать с толку. В SOLR запрос указывает, какие документы (или записи) будут получены.

Если вам нужны все документы, которые имеют какое-то значение в поле "теги", вы можете использовать

(tags:*)

Если вам нужны все документы, которые не имеют значения в поле "теги", то вы можете использовать:

(*:* AND NOT tags:*)  

или же

(*:* AND -tags:*)

and это не то же самое, что AND - какой разделитель вы должны использовать в своем запросе.

Ваш запрос, вероятно, просто искать (документы с and где-то в них в поле по умолчанию) или (deleted:false) или же (tags:[* TO *]).

Используйте правильный разделитель с пробелами вокруг него, чтобы сгруппировать несколько условий. Я бы также предложил использовать фильтр запроса (fq) для любого из них, которые являются статическими (например, deleted:false), поскольку это позволяет кэшировать этот запрос отдельно от вашего фактического запроса.

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