構建我的Solr索引(Apache Tomcat 6.0.33上的Lucene & Solr 3.4.0)時遇到問題。Solr核心的numDocs不等於已處理文檔的總和
索引文檔的數據來自Oracle數據庫。由於我必須處理大量的CLOB,因此我將數據導入分割爲多個requestHandlers,以在從數據庫獲取數據(多線程模擬)的同時提高性能。這些requestHandlers在我的solrconfig.xml中配置如下:
<requestHandler name="/segment-#" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">segment-#.xml</str>
</lst>
</requestHandler>
建索引,我開始了第一次DataImportHandler用乾淨= true選項,然後啓動所有其他段的全進口。當所有段都通過時,狀態頁(http://host/solr/segment-#)告訴我,對於每個段,正確的行數(根據數據庫中的SELECT COUNT(*)語句)被獲取並處理。迄今爲止很好。
但是,如果我現在調用核心的狀態頁面(http://host/solr/admin/core),則numDocs不是所有分段的總和。總會有一些文件丟失。我多次嘗試索引構建,差異總是不一樣。總而言之,索引中應該有830萬個文件,但實際上總是缺少100,000個條目。 numDocs與我通過Solr管理界面查詢*:*
查詢的號碼相同。
我打開infostream,看看日誌條目,還有Tomcat日誌,但沒有找到線索。我究竟做錯了什麼?我使用17個requestHandlers和我<indexDefaults>
配置如下:
<useCompoundFile>false</useCompoundFile>
<mergeFactor>17</mergeFactor>
<ramBufferSizeMB>32</ramBufferSizeMB>
<maxBufferedDocs>50000</maxBufferedDocs>
<maxFieldLength>2000000</maxFieldLength>
<writeLockTimeout>1000</writeLockTimeout>
<commitLockTimeout>10000</commitLockTimeout>
<lockType>native</lockType>
幫助是非常讚賞。非常感謝您提前!
我也有類似的問題。在我的情況下,文件丟失了,因爲solr無法將我發送給字段類型的某個字段的值進行轉換。如果我在solr中有一個整數字段No_Of_Apples,並且我試圖導入'three'而不是'3',則導入器會拋出異常並跳過文檔。我可能是這樣的,檢查apache/solr日誌也看到異常。 – Dorin