Für eine Filterabfrage in Solr muss ich alle Dokumente nicht eines bestimmten Typs sowie alle Dokumente dieses Typs einschließen, die einen Wert in einem bestimmten Feld haben.Solr-Filter-Abfrage einschließlich NOT und OR
Ich habe versucht, dieses:
fq=(-type_id:(A) OR content:(['' TO *]))
Aber es ist ohne Dokumente von type_id
B, C, usw., die null content
haben. (type_id
ist ein string
Feld und content
ist text
.)
ich diese Frage gesehen haben: Complex SOLR query including NOT and OR und diesen Beitrag über Operatoren: http://robotlibrarian.billdueber.com/solr-and-boolean-operators/. Ich denke, dass die Syntax, die ich habe, korrekt sein sollte. Kann jemand meinen Fehler sehen?
Update: Ich verwende den LuceneQParser. Es analysiert die Filterabfrage oben als
-type_id:A content:['' TO *]
Es analysiert die Filterabfrage in den Kommentaren vorgeschlagen (-type_id:A OR (content:[* TO *] AND type_id:A)
) als
-type_id:A (+content:[* TO *] +type_id:A)
so keine Ergebnisse.
was wollen Sie erreichen ?? type_id nicht A ODER alle Dokumente ohne Inhalt oder Inhalt? – Jayendra
@Jayendra Siehe den ersten Satz meiner Frage: keine Beschränkung für Dokumente, die nicht type_id = A; Wenn sie type_id = A sind, sollten sie einen Inhalt ungleich null haben. Ich habe zum Beispiel auch versucht, 'fq = ((type_id: (A) AND content: (['' TO *])) ODER type_id: (*))', aber immer noch kein Glück. – Kimberly
Können Sie versuchen, fq = -type_id: A ODER (Inhalt: [* TO *] UND type_id: A) – Jayendra