Ich stoße auf ein merkwürdiges Verhalten mit - Operatoren in der Solr / Lucene-Abfragesyntax. Wenn ich die Abfrage
ausführe %Vor%Ich bekomme alle erwarteten Ergebnisse (Lot), aber wenn ich Klammern wie
setze %Vor%oder
%Vor%Dann bekomme ich überhaupt keine Ergebnisse. Ich kann nicht verstehen warum. Haben Sie eine Erklärung für dieses Verhalten?
Vielen Dank im Voraus.
Die Frage wurde in. sehr gut beantwortet Solr-Mailingliste . Sie haben auch einen Eintrag in der offiziellen FAQ hinzugefügt, der besagt:
Boolesche Abfragen müssen mindestens einen "positiven" Ausdruck haben (dh; MUST oder SOLL), damit sie übereinstimmen. Solr versucht, dabei zu helfen, und wenn er aufgefordert wird, eine BooleanQuery auszuführen, die nur negative Klauseln auf der obersten Ebene enthält, fügt es eine Übereinstimmung mit allen Dokumentenabfragen hinzu (zB: *: *)
Wenn die BoolenQuery der obersten Ebene irgendwo eine verschachtelte BooleanQuery enthält, die nur negierte Klauseln enthält, wird diese verschachtelte Abfrage nicht geändert und entspricht (per Definition) keinem Dokument - falls erforderlich bedeutet, dass die äußere Abfrage nicht übereinstimmt.
So geben Ausdrücke mit nur "negativen" Werten immer 0 Ergebnisse zurück, außer auf der obersten Ebene, wo der Parser automatisch ein *:*
am Anfang der Abfrage hinzufügt.
Daher wird -text AND -text
in *:* -text AND -text
umgewandelt und hat somit Ergebnisse
(-text)
wird nicht in (*:* -text)
umgewandelt, da es nicht auf der obersten Ebene liegt, und daher liefert (-text)
keine Ergebnisse.
Die Erklärung hängt von der verwendeten Suchroutine und der gesamten Abfragezeichenfolge ab.
Zum Beispiel: Sie können nach mehreren Feldern suchen, wie
text AND text
& lt; - die in allen (Standard) Feldern gesucht hat - abhängig vom Such-Handler
FIELD1:text AND text
& lt; - die AND
verwendet, um in FIELD1
FIELD1:text1 AND (-text2)
& lt; - sucht (wie ich mich recht erinnere) nach text1 in FIELD1 AND NOT text2 in allen anderen (Standard) Dokumenten - abhängig vom Such-Handler.
Ich denke, die Verwendung von ()
ändert den Umfang / die Felder der Suche.
Vielleicht muss das Verhalten, das Sie beschreiben, mit so etwas zu tun haben?!