2009-08-20 16 views
7

¿Cómo puedo hacer un filtro en varios campos en Lucene.Net? En un campo hago simplemente:lucene.net combina varios filtros y no hay términos de búsqueda

TermQuery tool = new TermQuery(new Term("Tool", "Nail")); 
Filter f = new QueryFilter(tool); 

Si ahora quería añadir una longitud de uñas para el filtro, ¿cómo puedo hacer eso?

Además, quiero que el usuario pueda hacer una búsqueda sin términos de búsqueda (es decir, simplemente eligiendo una categoría) ¿cómo puedo hacer eso?

Respuesta

12

Creo que estás haciendo dos preguntas ...

Pregunta 1: Adición de un filtro adicional

Recuerde, QueryFilter acepta cualquier consulta (no sólo TermQuery). Por lo tanto, puede crear un BooleanQuery de los criterios que desea filtrar.

TermQuery toolQuery = new TermQuery(new Term("Tool", "Nail")); 
TermQuery nailLengthQuery = new TermQuery(new Term("NailLength", "3 inches")); 

BooleanQuery filterQuery = new BooleanQuery(); 
filterQuery.add(toolQuery, BooleanClause.Occur.MUST); 
filterQuery.add(nailLengthQuery, BooleanClause.Occur.MUST); 

Filter f = new QueryFilter(filterQuery); 

Pregunta 2: Si no conoce la palabra clave

Si el usuario no proporciona ningún término de búsqueda, puede buscar mediante una consulta MatchAllDocsQuery.

Cuestiones relacionadas