代码之家  ›  专栏  ›  技术社区  ›  abyx

在solr中映射一到多个实体

  •  6
  • abyx  · 技术社区  · 14 年前

    我正在尝试将一些实体从现有数据库映射到solr。

    表格如下:

    酒店: 酒店ID 酒店名称

    酒店地址: 酒店ID 类别ID 率

    类别: 类别ID 名称 价值

    如何使用DataImportHandler生成这样的文档:

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

    任何帮助都将不胜感激!

    1 回复  |  直到 14 年前
        1
  •  6
  •   Karl Johansson    14 年前

    使用DIH中的堆叠实体对关系进行索引。看看 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>