SOLR 7 DataImportHandler - 无法将数据导入多值字段(通过 "Join "表)。

问题描述 投票:0回答:1

我试图使用DIH来加载我们的SOLR数据。

我已经在其他SOLR核心安装上做了这个工作,没有问题,但是由于某些原因,我不能在这个安装上工作。

主数据(媒体--主要是视频)(来自主DIH查询)加载得很好。次级查询(一个嵌套的实体)应该加载视频标签的一对多记录,但没有在SOLR中填充多值字段。我没有看到任何错误信息(至少我在日志或其他任何地方都找不到),所以我不确定哪里出了问题。

我想知道的一件事是,"连接"(嵌套查询中的where子句)没有使用主键字段--但我认为这应该没有关系。如果我说错了,请纠正我。

这里是DIH配置的简化副本。

<dataConfig>
    <dataSource type="JdbcDataSource"
            driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
            url="jdbc:sqlserver://x.x.x.x;databaseName=media;"
            user="xxx"
            password="xxx"
            batchSize="100" />

    <document name="mediaContent">
        <entity name="media" query="SELECT * FROM mediaContent" pk="mediaID">
          <field column="mediaID" name="mediaID" />
          <field column="mediaType" name="mediaType" />
          <field column="videoID" name="videoID" />
          <field column="videoTitle" name="videoTitle" />
          <field column="videoDescription" name="videoDescription" />
          <field column="videoStatusID" name="videoStatusID" />
          <field column="videoPublished" name="videoPublished" />

          <entity name="videoTags"
            query="
                SELECT tagID, tagTitle
                FROM videoTags
                WHERE videoID = '${mediaContent.videoID}'">
            <field column="tagID" name="videoTagIDs" />
            <field column="tagTitle" name="videoTagTitles" />
          </entity>
        </entity>
    </document>
</dataConfig>

在managed-schema文件中的多值项目是按照以下方式配置的。

<field name="videoTagIDs" type="int" indexed="true" stored="true" required="false" multiValued="true" />
<field name="videoTagTitles" type="text" indexed="true" stored="true" required="false" multiValued="true" />

通常我会在第二个查询中使用主键来连接数据,但是在这种情况下,因为不是所有的内容都是视频,而且标签只与视频内容相关,我没有使用PK字段。相反,我使用的是视频ID字段。同样,我不确定这在这里是否重要。 当我在SQL中运行查询时,我得到了适当的数据。

如果有人对我如何调试二级查询有任何建议,或者更好的是,如果有人在我的配置中看到我做错了什么,我会感谢你的反馈。

谢谢

比尔

solr dataimporthandler
1个回答
0
投票

所以最后发现是大小写敏感性的问题。来自SQL查询的字段与DIH字段名中配置的大小写不完全匹配(videoID与videoId)。 虽然这对主查询没有影响,而且数据也被导入到那里,但对第二个嵌套实体却有影响。

调试的效果一直不好,但在SQL服务器上调试实际运行的查询,对看到发生了什么很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.