2012-08-08 8 views
17

Wie kann ich einen Satz von Dokument-IDs aus der Solr-Ergebnismenge ausschließen? Im Grunde so etwas wieWie man NICHT IN Query in Solr tut?

/select?q=tag_id:367 AND NOT id:(306670,302209)

versuchte ich es und es nicht ausschließt, Dokumente mit dieser IDs.

Antwort

20

Try this:

/select?q=*:*&fq=tag_id:367 AND id:[* TO *] -id:(306670 302209) 

, mit denen Sie sollten, wie viele IDs bauen hinzufügen, wie Sie wollen, ohne -id:302209 wollen jedes Mal, die Sie hinzufügen, die eine ID zu beseitigen. Das Umgekehrte ist auch wahr, Sie können die mit einer + austauschen und ein Array von Werten erzwingen, um auch dort zu sein.

+0

Thx für das Vorschlagen des 'q = *: *' Formats. Der Vorschlag, den Sie vorschlagen, schließt die Dokumente mit den IDs 306670 und 302209 immer noch nicht aus. Aber diese Option: '/ select? Q = *: * & fq = tag_id: 367 UND -id: 306670 UND -id: 302209' Im Wesentlichen die Gruppierung Funktionalität mit Klammern funktioniert bei mir nicht. – arun

+1

Es könnte sein, dass ich Kommas aus irgendeinem Grund hinzugefügt habe, versuche sie stattdessen mit Leerzeichen zu trennen. Ich werde auch meinen Code aktualisieren. – harmstyler

+0

Yup, Räume arbeiteten. Danke! – arun

8

Gefunden eine Lösung:

/select?q=tag_id:367&fq=-id:306670 AND -id:302209 

Nicht sicher, ob dies der beste Weg ist es aber zu tun!

+0

Das ist der Weg - Sie können auch ID: -306670 -302209 – Ansari

+0

Thx für die Bestätigung. Allerdings wirft die alternative Syntax org.apache.lucene.queryParser.ParseException für mich. – arun

+0

Hmm das könnte sein, weil das Standardsuchfeld nicht auf 'id' gesetzt ist. – Ansari

Verwandte Themen