2010-11-17 79 views
6

我試圖將現有數據庫中的幾個實體映射到SOLR。在SOLR中映射一對多實體

的表是:

酒店: HOTEL_ID HOTEL_NAME

HotelToCategory: HOTEL_ID CATEGORY_ID 率

類別: CATEGORY_ID 名 值

如何使用d ataImportHandler生產這樣的文件:

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

任何幫助將不勝感激!

回答

6

關係使用DIH中的堆疊實體編制索引。查看Solr wiki中的DIH page

Solr發行版中還包含一些基本示例,請參閱示例/ example-DIH。

儘管solr沒有(當前)支持索引文檔之間的關係,但您仍然必須找到索引這個索引的解決方法。例如通過只存儲顯示數據在一個非索引字段(這可能需要非常頻繁重新編制索引):

<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> 

或者通過存儲只是類別ID和做查找(無論是針對數據庫,或單獨的索引類別和查找針對Solr)在搜索時間:

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

這是怎麼處理每家酒店多個hotel_catagory_disply?有什麼需要添加到模式? – soandos 2013-08-13 17:17:59