2010-10-13 13 views
5

A pesar de ser un novato total, esta pregunta es bastante ingenua. Quiero buscar mi índice según el índice. Así que intenté crear un documento con solo un índice, Nombre, y luego quiero buscar ese campo en particular.Buscar por campo en Lucene

Estoy haciendo esto en el proceso de tratar de averiguar si puedo actualizar los campos de un documento sin eliminar realmente un documento en lucene.

Gracias.

Respuesta

0

Estoy haciendo esto en el proceso de tratar de averiguar si puedo actualizar los campos de un documento sin borrar un documento en lucene.

No entiendo la primera pregunta, pero no puede actualizar un documento en Lucene. Tienes que borrar y volver a insertar.

+0

Hola Thilo, solo quiero buscar mi índice por campo. Por ejemplo, quiero obtener el valor de un campo en particular [decir Nombre] en mi índice. Usualmente lo hace por Document.getField ("Nombre") si conoce el documento pero no puedo hacerlo funcionar mientras busco en el índice. – Sunil

+1

Document.getField solo funcionará si el campo está ALMACENADO (y no solo INDEXADO). – Thilo

4

Puede buscar palabras dentro de un campo en particular con la sintaxis de dos puntos, es decir, name:john.

Pero debido a que muchos índices solo tienen un campo en el que querrá buscar, hay un campo predeterminado, en caso de que solo busque john. Puede configurar qué campo que es cuando se instanciate su QueryParser

QueryParser parser = new QueryParser(Version.LUCENE_30, "name", anAnalyzer); 
Query q = parser.parse("john"); 

Si desea crear sus consultas mediante programación en lugar de analizar una cadena de consulta introducida por el usuario, entonces también tiene que especificar el campo de forma explícita, por ejemplo:

Query q = new TermQuery(new Term("name", "john")); 

Enlaces: Using fields in Lucene queries (Lucene Query Syntax) | QueryParser Javadoc | TermQuery Javadoc