2013-08-20 65 views
1

當我運行Nutch並且一個鏈接不再存在時,我可以運行readdb命令,它顯示有一些URL標記爲db_goneSolrClean不是從Solr刪除

於是我運行SolrClean命令和它說:

SolrClean deleting a total of 1 documents 

哪個是正確的,但沒有從Solr的

幫助去除?

如果你想看看我的配置,然後我有我自己的Solr/Nutch的設置是如何配置的Here

編輯一個博客:

這是一個很好的機會,它是不只是沒有工作的SolrClean命令,我有一種感覺,這與我的設置有關,刪除沒有被提交。

這是文件發出的刪除請求 - 但該文件存在:

INFO - 2013-08-09 15:54:52.729; 
org.apache.solr.update.processor.LogUpdateProcessor; [collection1] webapp=/solr path=/update params={wt=javabin&version=2} 
{delete=file:/C:/Users/alamil/Documents/TextFiles/Y2012.doc 
(-1442903587791306752)]} 0 2 

這是整個日誌:crawldb的

INFO - 2013-08-09 15:54:51.785; org.apache.solr.search.SolrIndexSearcher; Opening [email protected] main 
INFO - 2013-08-09 15:54:51.786; org.apache.solr.core.QuerySenderListener; QuerySenderListener sending requests to [email protected] main{StandardDirectoryReader(segments_7w:549:nrt _6j(4.3.1):C12/11 _6k(4.3.1):C12)} 
INFO - 2013-08-09 15:54:51.787; org.apache.solr.core.QuerySenderListener; QuerySenderListener done. 
INFO - 2013-08-09 15:54:51.787; org.apache.solr.update.DirectUpdateHandler2; end_commit_flush 
INFO - 2013-08-09 15:54:51.788; org.apache.solr.core.SolrCore; [collection1] Registered new searcher [email protected] main{StandardDirectoryReader(segments_7w:549:nrt _6j(4.3.1):C12/11 _6k(4.3.1):C12)} 
INFO - 2013-08-09 15:54:51.789; org.apache.solr.update.processor.LogUpdateProcessor; [collection1] webapp=/solr path=/update params={waitSearcher=true&commit=true&wt=javabin&waitFlush=true&version=2} {commit=} 0 903 
INFO - 2013-08-09 15:54:52.053; org.apache.solr.core.SolrCore; [collection1] webapp=/solr path=/select params={fl=id&q=id:[*+TO+*]&wt=javabin&version=2&rows=1} hits=13 status=0 QTime=1 
INFO - 2013-08-09 15:54:52.355; org.apache.solr.core.SolrCore; [collection1] webapp=/solr path=/select params={fl=id&q=id:[*+TO+*]&wt=javabin&version=2&rows=1} hits=13 status=0 QTime=0 
INFO - 2013-08-09 15:54:52.413; org.apache.solr.core.SolrCore; [collection1] webapp=/solr path=/select params={fl=id,boost,tstamp,digest&start=0&q=id:[*+TO+*]&wt=javabin&version=2&rows=13} hits=13 status=0 QTime=1 
INFO - 2013-08-09 15:54:52.729; org.apache.solr.update.processor.LogUpdateProcessor; [collection1] webapp=/solr path=/update params={wt=javabin&version=2} {delete=[file:/C:/Users/alamil/Documents/TextFiles/Y2012.doc (-1442903587791306752)]} 0 2 
INFO - 2013-08-09 15:54:52.733; org.apache.solr.update.DirectUpdateHandler2; start commit{,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false,prepareCommit=false} 
INFO - 2013-08-09 15:54:52.835; org.apache.solr.core.SolrDeletionPolicy; SolrDeletionPolicy.onCommit: commits:num=2 
commit{dir=NRTCachingDirectory([email protected]:\Users\alamil\Documents\Test\solr_home\data\index [email protected]; maxCacheMB=48.0 maxMergeSizeMB=4.0),segFN=segments_7w,generation=284,filenames=[_6j_1.del, _6k_Lucene41_0.pos, segments_7w, _6j.nvd, _6j_Lucene41_0.tim, _6j_Lucene41_0.tip, _6k.fdt, _6k.fnm, _6j_Lucene41_0.pos, _6j.nvm, _6k_Lucene41_0.doc, _6k_Lucene41_0.tim, _6k.si, _6j.si, _6k.nvd, _6k.fdx, _6j_Lucene41_0.doc, _6j.fdt, _6k.nvm, _6j.fdx, _6k_Lucene41_0.tip, _6j.fnm] 
commit{dir=NRTCachingDirectory([email protected]:\Users\alamil\Documents\Test\solr_home\data\index [email protected]; maxCacheMB=48.0 maxMergeSizeMB=4.0),segFN=segments_7x,generation=285,filenames=[_6j_1.del, _6k_Lucene41_0.pos, _6j.nvd, _6j_Lucene41_0.tim, _6j_Lucene41_0.tip, _6k.fdt, _6k.fnm, _6j_Lucene41_0.pos, _6j.nvm, _6k_Lucene41_0.doc, _6k_Lucene41_0.tim, _6k.si, _6j.si, _6k.nvd, _6k.fdx, segments_7x, _6j_Lucene41_0.doc, _6j.fdt, _6k.nvm, _6j.fdx, _6k_Lucene41_0.tip, _6j.fnm] 
INFO - 2013-08-09 15:54:52.835; org.apache.solr.core.SolrDeletionPolicy; newest commit = 285[_6j_1.del, _6k_Lucene41_0.pos, _6j.nvd, _6j_Lucene41_0.tim, _6j_Lucene41_0.tip, _6k.fdt, _6k.fnm, _6j_Lucene41_0.pos, _6j.nvm, _6k_Lucene41_0.doc, _6k_Lucene41_0.tim, _6k.si, _6j.si, _6k.nvd, _6k.fdx, segments_7x, _6j_Lucene41_0.doc, _6j.fdt, _6k.nvm, _6j.fdx, _6k_Lucene41_0.tip, _6j.fnm] 
+0

我的猜測是,變化不是'commited',我知道[有](https://issues.apache.org/jira/browse/NUTCH-1000)作爲選項進行提交的票據 –

+0

沒有標誌提交該操作,因此如果它沒有提交,我不知道該怎麼做 –

回答

1

採取轉儲和找到狀態db_gone URL和檢查索爾索引中的這些URL。如果你正在重新抓取,你不會在你的Solr索引中找到任何這些URL,因爲db_gone網址不被用於索引。

現在,當我們運行solrclean命令時,nutch在crawldb中找到所有具有狀態db_gone的url,並從Solr索引中刪除所有這些url。如果在solr索引中找到任何具有狀態db_gone的url,那麼只有索引將被更改,否則索引將保持不變。

這可能發生在你的情況。

注:
在重新抓取的情況下,只有我們可能會發現某些URL這已經抓取,並在第一爬行索引成功,但標記爲重新抓取階段db_gone因爲這些網址不再可用。因此,當我們運行solrclean命令並且solr索引將被更改時,這些URL將從solr索引中刪除。

查看SolrClean類的源代碼。
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.nutch/nutch/1.3/org/apache/nutch/indexer/solr/SolrClean.java

希望幫助你....

+0

是的,我瞭解SolrClean命令是如何工作的,以尋找url狀態爲DB_GONE並從Solr中刪除這些文檔。 SolrClean命令的問題可能不是那麼多,但也許我的設置不允許刪除發生,因爲它識別有1個文檔要刪除 –

+0

Nutch選擇1個文檔只從crawl_db中刪除,它不會檢查solr索引是否文檔在solr索引中是否存在。如果所選文檔不存在於solr索引中,則不會被刪除。但是您可以找到顯示「SolrClean:刪除1個文檔」的日誌。這個日誌並不總是意味着將從Solr索引中刪除1個文檔。如果文件存在於solr索引中,那麼只有它會被刪除。 – mgs

+0

是的,問題在於Solr中的文檔是definatley。我檢查了日誌並查看了它發出的刪除請求,並且它是針對Solr索引中存在的文檔 –

相關問題