来自多个实体的solr中的数据导入

时间:2011-10-21 07:01:59

标签: solr lucene dataimporthandler

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

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

我连接后运行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. 如果在表中找到数据

    &LT; DOC&GT;

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

  3. &LT; DOC&GT;

    &LT; int name =“Item_ID”&gt; 13773&lt; / INT&GT;

    &LT; str name =“itemcode”&gt; 15438680&lt; / STR&GT;

    &LT; / DOC&GT;

1 个答案:

答案 0 :(得分:0)

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