2015-10-28 56 views
1

所以我在這裏使用solr作爲索引文件。使用solr java api刪除索引文件

現在這裏是我的小部分代碼:

 db = cmd.start(); 
     new NotesSolrWriter(db, null); 
     SolrHelper slrHelp = new SolrHelper(); 
     QueryResponse res = slrHelp.queryResults("dontKnow1 ", null); 
     SolrDocumentList ids = res.getResults(); 

     count = ids.size(); 
     System.out.println(count); 
     boolean getServer = getServer(); 
     if (getServer) { 
      for (SolrDocument id : ids) { 
       System.out.println("See my id " + id.toString()); 
       FTIserver.deleteById(id.toString()); 
       FTIserver.commit(); 
       // FTIserver.commit(true, true); 
      } 
     } 

     QueryResponse res1 = slrHelp.queryResults("dontKnow1 ", null); 
     SolrDocumentList ids1 = res1.getResults(); 
     int count1 = ids1.size(); 
     System.out.println("before delete::" + count); 
     System.out.println("after delete::" + count1); 

輸出:

See my id SolrDocument[{contid=3BAC9EE84691380265257EEB002BAA77, cmrights=[dummy, dummy1, dummy2], dbtype=MAIL, subject=NotesSlrWriter123, [email protected], [email protected], posteddate=Tue Oct 27 13:26:57 IST 2015}] 
See my id SolrDocument[{contid=F92F9D8BBD65F36365257EEB0040DEFE, cmrights=[dummy, dummy1, dummy2], dbtype=MAIL, subject=NotesSlrWriter123, [email protected], [email protected], posteddate=Tue Oct 27 17:18:33 IST 2015}] 
before delete::2 
after delete::2 

所以在這裏我所試圖做的是讓數據庫然後NotesSolrWrite使用了索引我的筆記文檔,保存在服務器上,所以在res如預期的那樣有兩個這樣的文件滿足查詢條件並且count.size給出了被選擇的文件的數量,並且我是printi ng count的值。

所以我的問題是,現在我要刪除從服務器

這個文件,但我不知道我是否做對了,經過我刪除代碼仍然我得到的服務器的文檔。如何刪除任何其他方式?

這將是很好,如果有人幫我

+0

我的猜測是您使用此方法只[deleteById](https://lucene.apache.org/solr/5_0_0/solr-solrj/org/apache/solr/client/刪除文件solrj/SolrClient.html#deleteById%28java.lang.String%29)。這會返回一個'UpdateResponse'響應。請檢查solr返回的狀態代碼。我不確定'FTIserver'是什麼。 – YoungHobbit

+0

私人SolrServer FTIserver; FTI solr服務器,我聲明在代碼的頂部抱歉不解釋! –

+0

您是否檢查過響應碼? – YoungHobbit

回答

0

我找到了解決方案。我用

FTIserver.deleteByQuery("dontKnow1");"