2010-11-17 9 views
6

Sto tentando di mappare alcune entità da un database esistente a SOLR.Mapping di entità uno-a-molti in SOLR

Le tabelle sono:

hotel: hotel_id HOTEL_NAME

HotelToCategory: hotel_id category_id tasso

Categoria: category_id nome valore

Come posso usare D ataImportHandler per produrre documenti come questo:

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

Qualsiasi aiuto sarà molto apprezzato!

risposta

6

Le relazioni sono indicizzate utilizzando le entità impilate in DIH. Dai uno sguardo allo DIH page nel wiki Solr.

Ci sono anche alcuni esempi di base di questo incluso nelle distribuzioni Solr, date un'occhiata in esempi/esempio-DIH.

In questo caso, tuttavia, Solr non supporta (attualmente) le relazioni tra i documenti di indice, quindi sarà necessario trovare una soluzione alternativa per indicizzarla. Per esempio, semplicemente la memorizzazione dei dati di visualizzazione in un campo non indicizzato (che potrebbe richiedere reindicizzazione molto frequente):

<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 memorizzando solo ID categoria e fare ricerche (sia sul database, o le categorie di indice separatamente e ricerca contro Solr) al momento della ricerca:

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

In che modo gestisce più hotel_catagory_disply per hotel? C'è qualcosa che deve essere aggiunto allo schema? – soandos

Problemi correlati