在SOLR中映射一对多实体

aby*_*byx 6 lucene solr

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

表格是:

酒店:hotel_id hotel_name

HotelTocategory:hotel_id category_id rate

类别:category_id名称值

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

{
    hotel_name: 'name',
    hotel_id: 1,
    categories: [
       { category_name: 'cname',
         value: 'val',
         rate: 3,
       }
    ]
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

Kar*_*son 6

使用DIH中的堆叠实体对关系进行索引.看看Solr wiki 中的DIH页面.

Solr发行版中还包含了一些基本示例,请参阅examples/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>
Run Code Online (Sandbox Code Playgroud)

或者通过在搜索时只存储类别ID并进行查找(分别针对数据库或索引类别并针对Solr进行查找):

<entity name="hotel_category_display"
        query="SELECT STATEMENT THAT RETURNS JSON REPRESENTATION">
    <field column="category" name="category" />
</entity>
Run Code Online (Sandbox Code Playgroud)