2008-12-05 5 views

Respuesta

0

No está claro si desea un verdadero comportamiento SQL-GROUP "GROUP BY", o simplemente un "ORDER BY" comportamiento. No hay nada como las funciones de agregación en Lucene, por lo que "GROUP BY" tendría que implementarse en su aplicación, además de Lucene.

Sin embargo, ordenar por campos es bastante fácil. Asegúrese de que el campo deseado esté indexado y cree un objeto org.apache.lucene.search.Sort que se aprobará como parte de los criterios de búsqueda; la mayoría de los métodos de búsqueda tienen una sobrecarga que acepta una instancia de Sort.

Si tuviera que implementar su propia lógica "GROUP BY", tener los resultados "ORDERED BY" en los campos correctos es un primer paso útil.

1

Lucene tiene algunas bibliotecas suplimentary, uno de ellos lo que necesita: Grouping

no pueden agruparse por valores de consulta de función, ni por las consultas arbitrarias (como lo hace Solr), pero se puede por el campo de un solo valor.

Algo similar (búsqueda por facetas) se llevará a cabo en Lucene 4.0

+0

El enlace está roto. Tal vez la nueva ubicación sea esta: http://lucene.apache.org/core/old_versioned_docs/versions/3_2_0/api/contrib-grouping/org/apache/lucene/search/grouping/package-summary.html –

+0

Sí, ty . Enlace roto actualizado. – mihaicc

2

Lucene 3.4 ahora soporta búsqueda por facetas. Al indexar, especifica algo complementario y en el tiempo de búsqueda busca por consulta y por grupos.

para los próximos 3 docs, que se indexa con estos grupos

doc1: monday, 1pm, 3min  
doc2: monday, 1pm, 4min  
doc3: monday, 2pm, 3min 

puede buscar sólo para el primer parámetro: Lunes, y obtener valor: 3, o se puede desglosar y la búsqueda de lunes/13:00 y el valor de conseguir: 2 o establecer la profundidad de búsqueda y obtener 3

monday :3 
monday/1pm :2 
monday/1pm/3min :1 
monday/1pm/4min :1 
monday/2pm :1 
monday/2pm/3min :1 

aquí está el source sample:

Pero la mayoría o f todos leen faceted search

Cuestiones relacionadas