2013-03-04 62 views
0

我已經在我的數據-config.xml中如下:Solr的4.1不處理在增量導入添加的文檔

<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?有什麼我可以做的嗎?

感謝, 迦勒

回答

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}'" 
                 ^----^ 
+0

當我嘗試這個它停止獲取添加的行,仍然沒有處理任何東西。 – 2013-03-06 15:54:56

+0

其實當我嘗試這個時,它開始拋出錯誤。 getNext()在查詢'SELECT * FROM item WHERE itemid ='374126''(我最近添加的記錄)時失敗。 – 2013-03-06 16:14:43

+0

也許是遲到的回覆,但這肯定是答案。 $ {dataimporter.delta.id}的id部分應該反映唯一鍵的名稱。 – Vanderstaaij 2014-02-10 20:25:48

0

嘗試

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

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

deltaImportQuery:(只用於delta導入)。如果不存在,DIH將嘗試通過修改「查詢」(在識別增量之後)構造導入查詢(這很容易出錯)。有一個名稱空間$ {dih.delta.column-name}可用於此查詢。 e.g:從TBL選擇*其中id = $ {} dih.delta.id

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是相同的名稱

相關問題