在SOLR中映射一对多实体

时间:2010-11-17 18:28:16

标签: lucene solr

我正在尝试将现有数据库中的一些实体映射到SOLR。

表格是:

地图: HOTEL_ID HOTEL_NAME

HotelToCategory: HOTEL_ID CATEGORY_ID 率

类别: CATEGORY_ID 名称 值

如何使用DataImportHandler生成如下文档:

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:6)

使用DIH中的堆叠实体对关系进行索引。看看Solr wiki中的DIH page

Solr发行版中还包含了一些基本示例,请参阅示例/示例-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>