У меня большой индекс solr, и я заметил, что некоторые поля не обновляются правильно (индекс динамический).
Это привело к тому, что некоторые поля имеют пустое поле «id».
Я пробовал эти запросы, но они не работали:
id:''
id:NULL
id:null
id:""
id:
id:['' TO *]
Есть ли способ запросить пустые поля?
Спасибо
?q=-id:*
получишьCannot parse '-q:*': '*' or '?' not allowed as first character in WildcardQuery
?q=-id:*
похоже, работает, как ожидалось. Возможно, ошибка парсинга связана с этой проблемой .Lucene Specification Version: 3.2.0
Я использовал. Рад, что они добавили синтаксис в Solr 4.5.1.Одно предостережение! Если вы хотите составить это с помощью ИЛИ или И, вы не можете использовать его в этой форме:
но вы должны использовать
Эта форма прекрасно сочетается. Очевидно, SOLR расширит первую форму до второй, но только когда это верхний узел. Надеюсь, это сэкономит вам время!
источник
Согласно SolrQuerySyntax , вы можете использовать
q=-id:[* TO *]
.источник
Если у вас большой индекс, вы должны использовать значение по умолчанию
а затем запросите это значение по умолчанию. Это намного эффективнее, чем q = -id: ["" TO *]
источник
Вы также можете использовать это так.
источник
Если вы используете SolrSharp, он не поддерживает отрицательные запросы.
Вам необходимо изменить QueryParameter.cs (создать новый параметр)
А в классе QueryParameterCollection.cs переопределение ToString () проверяет, является ли параметр Negative истинным.
Когда вы вызываете создателя параметра, если это отрицательное значение. Простое изменение свойства
источник
вы можете сделать это с помощью запроса фильтра q = *: * & fq = -id: *
источник