2012-05-21 10 views
5

Tengo algunos requisitos bastante complejos para una búsqueda SOLR que necesito ejecutar en mi base de datos de contenido etiquetado. Primero necesito filtrar la base de datos a los resultados que coinciden con mis etiquetas de filtro. Cualquiera de estos resultados que tienen una etiqueta de la lista negra debe eliminarse a menos que también contengan etiquetas de la lista blanca.Consulta complejo SOLR que incluye NOT y O

Digamos que quiero recuperar todos los documentos etiquetados "bosque" o "conservación". Pero quiero excluir documentos etiquetados como "uk" o "europe", a menos que también estén etiquetados con "africa" ​​o "asia". Traté de escribir esto en mi consulta SOLR:

tag:((forest OR conservation) AND (africa OR asia OR !uk OR !europe)) 

La lógica me suena pero la consulta no funciona. Tengo 46 documentos etiquetados con "bosque" o "conservación", uno de los cuales también está etiquetado con "asia" y ninguno está etiquetado con "uk" o "europe" pero la consulta no arroja resultados.

También vi información sobre el parámetro fq (consulta filtrada) en SOLR que sonaba como que podría ser útil. Pero esto tampoco pareció ayudar. Parece que es la combinación de NOT y OR lo que hace que SOLR se descomponga.

¿Es lo que estoy tratando de hacer posible? ¿Mi lógica está defectuosa en alguna parte? Esto está en SOLR 1.4 por cierto - en caso de que este es un problema que se ha resuelto en algún lugar ...

¡Gracias por cualquier consejo!

+0

SOLR 4.1, sin embargo, ¿verdad? –

+0

¡No, era 1.4! Desde actualizado aunque ... – vitch

+0

Oh, pobre hombre. :( –

Respuesta

8

tratar

tag:((forest OR conservation) AND (africa OR asia OR (*:* AND !uk AND !europe))) 
+1

Gracias, eso lo hace! ¿Podría explicar un poco más acerca de por qué? Parece que las negaciones necesitan el conjunto completo '(*: *)' para coincidir con? – vitch

+0

exactamente, es lo que piensas – Persimmonium

Cuestiones relacionadas