2010-11-17 11 views
6

Estoy tratando de asignar algunas entidades de una base de datos existente a SOLR.Asignación de entidades de uno a muchos en SOLR

Las tablas son:

Hotel: hotel_id hotel_name

HotelToCategory: hotel_id category_id tasa

Categoría: category_id nombre valor

¿Cómo puedo utilizar re ataImportHandler para producir documentos como este:

{ 
    hotel_name: 'name', 
    hotel_id: 1, 
    categories: [ 
     { category_name: 'cname', 
     value: 'val', 
     rate: 3, 
     } 
    ] 
} 

¡Cualquier ayuda será muy apreciada!

Respuesta

6

Las relaciones se indexan utilizando entidades apiladas en DIH. Eche un vistazo en el DIH page en la wiki de Solr.

También hay algunos ejemplos básicos de esto incluido en las distribuciones de Solr, eche un vistazo a los ejemplos/ejemplo-DIH.

Sin embargo, aquí hay una limitación, solr no (actualmente) admite relaciones entre documentos de índice, por lo que deberá encontrar una solución para indexar esto. Por ejemplo, acaba de almacenar datos de pantalla en un campo no indexado (que podría requerir indexación muy frecuente):

<document> 
    <entity name="hotel" query="select * from hotel"> 
     <field column="id" name="hotel_id" /> 
     <field column="hotel_name" name="hotel_name" /> 
     <entity name="hotel_category_display" 
       query="SELECT STATEMENT THAT RETURNS JSON REPRESENTATION"> 
      <field column="category" name="category" /> 
     </entity> 
</document> 

O almacenando simplemente la categoría ID y hacer operaciones de búsqueda (ya sea en contra de la base de datos o categorías de índice por separado y las operaciones de búsqueda contra Solr) en el tiempo de búsqueda:

<entity name="hotel_category_display" 
     query="SELECT STATEMENT THAT RETURNS JSON REPRESENTATION"> 
    <field column="category" name="category" /> 
</entity> 
+0

¿Cómo maneja esto el hotel_catagory_disply por hotel? ¿Hay algo que deba agregarse al esquema? – soandos

Cuestiones relacionadas