0

我的 data-config.xml 中有以下内容:

<dataConfig>
  <dataSource dataSource info"/>
  <document>
   <entity name="item"
        pk="itemid"
        query=" SELECT itemid,start,end,item_categoryid
                FROM item"
        deltaImportQuery="  SELECT  * FROM item
                            WHERE   itemid = '${dataimporter.delta.item_id}'"
        deltaQuery="    SELECT  itemid
                        FROM    item
                        WHERE   last_mod > '${dataimporter.last_index_time}'
                            OR  create_time> '${dataimporter.last_index_time}'">
        <field column="itemid" name="item_id"/>
        <field column="start" name="start"/>
        <field column="end" name="end"/>
        <entity name="item_category" 
                pk="item_categoryid"
                query=" SELECT  item_categoryid,desc,title 
                        FROM    item_category
                        WHERE   mbpostingid='${item.item_categoryid}'"
                deltaImportQuery="  SELECT  * FROM item_category
                                    WHERE   item_categoryid= '${dataimporter.delta.id}'"
                deltaQuery="SELECT  item_categoryid
                            FROM    item_category
                            WHERE   last_mod > '${dataimporter.last_index_time}'
                                OR  create_time > '${dataimporter.last_index_time}'">
           <field column="item_categoryid" name="id"/>
           <field column="desc" name="desc"/>
           <field column="title" name="title"/>
        </entity>
    </entity>
  </document>
</dataConfig>

每当我运行增量导入

http://localhost:8983/solr/dataimport?command=delta-import

Solr 正在更新我的数据库中已更新的行,但不会为已添加的行添加索引,也不会为已删除的行删除索引。

Solr 识别(获取)我新添加的行到我的数据库,但它不会“处理”它们

<str name="Total Documents Processed">0</str>

我的dataConfig有什么问题吗?有什么我可以做的吗?

谢谢, 迦勒

4

3 回答 3

1
query="SELECT itemid,start,end,item_categoryid
            FROM item"
deltaImportQuery="SELECT  * FROM item
                  WHERE   itemid = '${dataimporter.delta.item_id}'"
                                                         ^-----^

我们必须在变量中使用确切的列名。在我看来,列名是itemid(没有下划线),所以你应该试试这个:

query="SELECT itemid,start,end,item_categoryid
            FROM item"
deltaImportQuery="SELECT  * FROM item
                  WHERE   itemid = '${dataimporter.delta.itemid}'"
                                                         ^----^
于 2013-03-04T22:48:29.127 回答
0

尝试

deltaImportQuery="SELECT  * FROM item
                  WHERE   itemid = '${dih.delta.item_id}'"

http://wiki.apache.org/solr/DataImportHandler说:

deltaImportQuery :(仅在 delta-import 中使用)。如果不存在,DIH 会尝试通过(在识别增量之后)修改“查询”来构造导入查询(这很容易出错)。有一个命名空间${dih.delta.column-name}可以在这个查询中使用。例如:select * from tbl where id=${dih.delta.id}

于 2013-07-26T20:26:19.103 回答
0
<entity name="searchitemcontent" pk="itemid" 
        query="select skuid, noofsupp, membership, isnull(negotiable,0) as negotiable from searchskumaster skm "
        deltaImportQuery="select skuid, skuname, combineskuname,Category, Product, Brand, Price, discount, url, image, itemstatus , supplierid,itemid, marketprice,mwsimage, pricestatus, isservice ,suppliername, noofsupp, membership, isnull(negotiable,0) as negotiable from
        searchskumaster skm where itemid='${dih.delta.itemid}'"
        deltaQuery="select itemid  from searchskumaster where modifieddate &gt; '${dataimporter.last_index_time}'"
        deletedPkQuery="SELECT itemid FROM searchskumaster where isdeleted=1 and modifieddate &gt; '${dataimporter.last_index_time}' ">

注意:选择itemid。在deltaQuerydeltaImportQuery查询中,itemid ='${dih.delta. itemid } ,在两个查询中 itemid 应该是相同的名称

于 2017-02-01T11:54:27.260 回答