SOLR 7 DataImportHandler – 无法将数据放入多值字段(通过 "Joined" table)

SOLR 7 DataImportHandler – Unable to get data into multivalued fields (via "Joined" table)

我正在尝试使用 DIH 加载我们的 SOLR 数据。

我在其他 SOLR cores/installations 上完成此操作没有问题,但由于某种原因我无法在这个安装上运行它。

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

我想知道的一件事是 "join"(嵌套查询中的 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>

托管架构文件中的多值项配置如下:

<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场。相反,我正在使用 videoID 字段。同样,我不确定这在这里是否重要。当我 运行 SQL.

中的查询时,我得到了正确的数据

如果有人对我如何调试辅助查询的情况有任何建议,或者更好的是,如果有人在我的配置中看到我做错了什么,我将感谢您的反馈。

谢谢!

比尔

所以最后证明是区分大小写的问题。 来自 SQL 查询的字段与 DIH 字段名称(videoID 与 videoId)中配置的大小写不完全匹配。虽然这对主查询无关紧要,并且数据是在那里导入的,但对第二个嵌套实体来说却很重要。

调试从来没有很好地进行过,但是调试 运行 在 SQL 服务器上的实际查询有助于了解发生了什么。