Ich habe einen großen Solr-Index und habe festgestellt, dass einige Felder nicht korrekt aktualisiert wurden (der Index ist dynamisch).
Dies hat dazu geführt, dass einige Felder ein leeres "ID" -Feld haben.
Ich habe diese Abfragen ausprobiert, aber sie haben nicht funktioniert:
id:''
id:NULL
id:null
id:""
id:
id:['' TO *]
Gibt es eine Möglichkeit, leere Felder abzufragen?
Vielen Dank
?q=-id:*
bekommenCannot parse '-q:*': '*' or '?' not allowed as first character in WildcardQuery
?q=-id:*
scheint wie erwartet zu funktionieren. Möglicherweise hängt der Analysefehler mit diesem Problem zusammen .Lucene Specification Version: 3.2.0
Ich habe sie benutzt. Ich bin froh, dass sie die Syntax in Solr 4.5.1 hinzugefügt haben.Eine Einschränkung! Wenn Sie dies über ODER oder UND verfassen möchten, können Sie es nicht in dieser Form verwenden:
aber du musst verwenden
Diese Form ist perfekt zusammensetzbar. Anscheinend wird SOLR das erste Formular auf das zweite erweitern, aber nur, wenn es sich um einen obersten Knoten handelt. Hoffe das spart dir etwas Zeit!
quelle
Laut SolrQuerySyntax können Sie verwenden
q=-id:[* TO *]
.quelle
Wenn Sie einen großen Index haben, sollten Sie einen Standardwert verwenden
und fragen Sie dann nach diesem Standardwert. Dies ist viel effizienter als q = -id: ["" TO *]
quelle
Sie können es auch so verwenden.
quelle
Wenn Sie SolrSharp verwenden, werden negative Abfragen nicht unterstützt.
Sie müssen QueryParameter.cs ändern (Neuen Parameter erstellen)
In der QueryParameterCollection.cs-Klasse prüft die ToString () - Überschreibung, ob der negative Parameter wahr ist
Wenn Sie den Parameterersteller aufrufen, wenn es sich um einen negativen Wert handelt. Ändern Sie einfach die Eigenschaft
quelle
Sie können dies mit der Filterabfrage q = *: * & fq = -id: * tun
quelle