Исключить поля с нулевыми значениями в запросах 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
), поскольку это позволяет кэшировать этот запрос отдельно от вашего фактического запроса.