2012-08-08 20 views
17

¿Cómo puedo excluir un conjunto de ID de documentos del conjunto de resultados Solr? Esencialmente algo así como¿Cómo hacer una consulta NO en Solr?

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

lo probé y no excluye documentos con esos identificadores.

Respuesta

20

Prueba esto:

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

que debe permitir que usted construya a cabo añadir tantos identificadores de lo que desee sin tener que añadir -id:302209 cada vez que se desea eliminar un ID. Lo contrario también es cierto, puede cambiar el - con un + y forzar una matriz de valores para que estén allí también.

+0

Thx para sugerir el formato 'q = *: *'. El que está sugiriendo aún no excluyó los documentos con id 306670 y 302209. Pero este sí lo hace: '/ select? Q = *: * & fq = tag_id: 367 AND -id: 306670 AND -id: 302209' Básicamente, la agrupación la funcionalidad con parantheses no funciona para mí. – arun

+1

Podría ser porque agregué comas por alguna razón, intente separarlas con espacios en su lugar. También actualizaré mi código. – harmstyler

+0

Sí, espacios trabajados. ¡Gracias! – arun

8

encontrado una solución:

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

No está seguro de si esta es la mejor manera de hacerlo sin embargo!

+0

Esa es la manera - también puede hacer id: -306670 -302209 – Ansari

+0

Thx para confirmar. Sin embargo, la sintaxis alternativa está arrojando org.apache.lucene.queryParser.ParseException para mí. – arun

+0

Hmm que podría ser porque el campo de búsqueda predeterminado no está configurado en 'id'. – Ansari

Cuestiones relacionadas