【问题标题】:Apache Solr Indexing from DIH来自 DIH 的 Apache Solr 索引
【发布时间】:2014-07-12 06:46:35
【问题描述】:

我已经安装了 solr。我的 data-config.xml 如下所示

    <dataConfig>
    <dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:/temp/example/ex" user="sa" />
    <document name="products">
     <entity name="item" query="select NAME,BSIN from items">
        <field column="NAME" name="id" />
        <field column="BSIN" name="bsin" />

        <entity name="brands" query="select brandname from brand where                 bsin='${item.BSIN}'" transformer="TemplateTransformer">
            <field name="brand" column="BRAND" />
            <field name="cname" column="namedesc" template="${item.NAME}-${brands.BRAND}" />
        </entity>

       </entity>
    </document>
   </dataConfig>

bsin 和 brand 是多值字段。现在每个 NAME 都有多个 BSIN,每个 BSIN 都有一个品牌名称。 我希望索引应该以这种方式发生:

名称1-品牌1 名称1-品牌2 Name2-Brand1 等。我正在使用条款组件进行自动完成。请帮助我实现这一目标。

提前感谢您的帮助。 问候, 帕万

【问题讨论】:

    标签: solr dih


    【解决方案1】:

    尝试将 rootEntity="false" 属性放在您的外部 item 实体上。这将向 DIH 表明该文档实际上应该为内部 brands 实体的每个新实例创建。

    【讨论】:

    • 您好 Alexandre,谢谢您的回答。我尝试了 rootEntity="false" 选项。但我只得到特定项目的 2 个结果。还有什么我可以尝试的吗?
    • 您的 ID 字段是什么?它必须是独一无二的。如果您使用来自父实体的 id,它们将相互覆盖。也许您还需要模板转换 ID。
    • ID 字段是默认字段:schema.xml 中的 id。你能给我举个例子吗.. 我会尝试用它重新索引..
    • 如果您的 id 字段是 id 那么您正在从外部实体中选择该值。这意味着您所有的内部实体都将争夺该 id 值。您需要创建一个复合 id 或使用 UUIDUpdateProcessorFactory 之类的东西
    猜你喜欢
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    相关资源
    最近更新 更多