0

我正在尝试 SQLServer 数据库的数据导入处理程序。

我在 中添加了 DIhandler ,根据我的数据库模式solrconfig.xml创建了一个,并在其中添加了一个不同的字段。我正在连接 SQLServer 数据库。data-config.xmlschema.xml

连接并运行后,dataimport?command=full-import我没有正确获取 xml 标记(数据)。

在我的 data-config.xml* * ***

 <document name="Product"> 
    <entity dataSource="ds-1" name="Item" pk="Item_ID"
            query="select  item.Item_ID, itemcode from item"
            deltaImportQuery="select  item.Item_ID, itemcode from item  where 
                          item.Item_ID='${dataimporter.delta.Item_ID}' "
            deltaQuery="select Item_ID from item where last_modified > 
                    '${dataimporter.last_index_time}' ">

          <entity name="ReturnSolrFilter"
              query="select Item_Id , CustomField_ID as CustomField from 
                         ReturnSolrFilter where Item_Id = '${Item.Item_ID}' "
              deltaQuery="select Item_Id , CustomField_ID as CustomField from 
                              ReturnSolrFilter where last_modified > 
                              '${dataimporter.last_index_time}' "
              parentDeltaQuery="select Item_ID from item where Item_ID = 
                              '${ReturnSolrFilter.Item_ID}' ">
         </entity>

   </entity>
  </document>

现在结果是* ** * ***

  1. 如果在两个表中都找到数据

    <文档>

      < int name="Item_ID">13773< /int>
    
      < str name="itemcode">15438680< /str>
    
        < arr name="CustomField">
    
            < str>31< /str>
    
            < str>32< /str>
    
        < /arr>
    < /doc>
    
  2. 如果在 Item Table 但未在 ReturnSolrFilter 中找到数据,则不生成标签(这是未生成实际问题 CustomField 标签

<文档>

<int name="Item_ID">13773</int>

<str name="itemcode">15438680</str>

</文档>

4

1 回答 1

0

我认为您需要用 isnull 包装您的 CustomField_ID: isnull(Custom_ID, '') as CustomField这应该强制 DataImportHandler 在生成的 XML 中为 CustomField 创建一个空字段,以便作为 solr 文档提交。

于 2011-10-21T11:37:30.433 回答