2010-11-17 209 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