Pregunta

Saludos

Mi modelo de dominio es el siguiente

class Species {
 private String name;
 ..
 ..
 List<Family> families;
}

class Family{
 private String name;
 private String locusId;
 ..
 List<Member> members; 
}

class Members{
 private String name;
 private String repTranscript;

}

Quiero usar 'Hibernate Buscar' para ejecutar consultas como

org.hibernate.lucene.search.Query luceneQuery = parser.parse( "name:ASpeciesName or name:AGroupName or locudID:someLocusID" );
    org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery );
List result = fullTextQuery.list();

Me pregunto, ya que las tres clases tienen un mismo campo 'nombre' Qué buscar agains todas las clases?

¿El 'resultado' tiene objetos de todos los tipos?

¿Fue útil?

Solución

También depende de cómo se indexa. Si índice de cada clase por separado (es decir, cada clase tiene una anotación de @Indexed) y no especifica un tipo de clase esperado al crear el FullTextQuery se obtiene clases mixtas de hecho en el resultado.

Sin embargo, en su ejemplo, usted podría considerar el uso @IndexedEmbedded en el atributo familias y miembros . En este caso, los nombres de campo en la Lucene Documento s va a families.name y families.members.name .

Tener un vistazo a la documentación de Hibernate búsqueda en línea y la característica de indexación incrustado.

- Hardy

Otros consejos

Como es lógico, sí, porque en ninguna parte en la consulta tienen que especifica el tipo de objetos que desee.

Si desea restringir los resultados a tipos específicos, que necesita para aprobar esos tipos como una lista vararg:

fullTextSession.createFullTextQuery( luceneQuery, A.class, B.class );

Esto se describe en el docs .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top