2013-04-20 70 views
-2

只刪除一個行的Solr的索引我已經做了的Java apllication它可以索引我的最後一排(這是我WABT)有什麼辦法使用solrj

但現在我想問的是有沒有娃喲加深這個角色的指數!你可以給我指示如何做到這一點,或者簡單的代碼來改變我的代碼?

; 
public class indexSolr { 
    private Connection conn = null; 
    private static HttpSolrServer server; 
     private Collection docs = new ArrayList(); 
     private int _totalSql = 0; 
     private long _start = System.currentTimeMillis(); 


    public static void main(String[] args) throws SolrServerException, IOException, SQLException 
    { String url = "http://localhost:8983/solr/db"; 


        indexSolr idxer = new indexSolr(url); 

    idxer.doSqlDocuments(); 

    idxer.endIndexing(); 


    } 

    private void doSqlDocuments() throws SQLException { 

     try { 
      Class.forName("org.postgresql.Driver"); 

      conn = DriverManager.getConnection(
        "jdbc:postgresql://localhost:5432/biz_cat", 
        "postgres", "pos"); 
      java.sql.Statement st = null; 
      st = conn.createStatement(); 
      ResultSet rs = st.executeQuery("select * from pl_biz order by id DESC LIMIT 1"); 

      while (rs.next()) { 

      SolrInputDocument doc = new SolrInputDocument(); 

      Integer id = rs.getInt("id"); 
      String name = rs.getString("name"); 
      String midname = rs.getString("midname"); 
      String lastname = rs.getString("lastname"); 
      String frlsname = rs.getString("frlsname"); 
      String biz_subject = rs.getString("biz_subject"); 
      String company_type = rs.getString("company_type"); 
      String obshtina = rs.getString("obshtina"); 
      String main_office_town = rs.getString("main_office_town"); 
      String address = rs.getString("address"); 
      String role = rs.getString("role"); 
      String country = rs.getString("country"); 
      String nace_code = rs.getString("nace_code"); 
      String nace_text = rs.getString("nace_text"); 
      String zip_code = rs.getString("zip_code"); 
      String phone = rs.getString("phone"); 
      String fax = rs.getString("fax"); 
      String email = rs.getString("email"); 
      String web = rs.getString("web"); 
      String location = rs.getString("location"); 
      String geohash = rs.getString("geohash"); 
      Integer popularity = rs.getInt("popularity"); 

      doc.addField("id", id); 
      doc.addField("name", name); 
      doc.addField("midname", midname); 
      doc.addField("lastname", lastname); 
      doc.addField("frlsname", frlsname); 
      doc.addField("biz_subject", biz_subject); 
      doc.addField("company_type", company_type); 
      doc.addField("obshtina", obshtina); 
      doc.addField("main_office_town", main_office_town); 
      doc.addField("address", address); 
      doc.addField("role", role); 
      doc.addField("country", country); 
      doc.addField("nace_code", nace_code); 
      doc.addField("nace_text", nace_text); 
      doc.addField("zip_code", zip_code); 
      doc.addField("phone", phone); 
      doc.addField("fax", fax); 
      doc.addField("email", email); 
      doc.addField("web", web); 
      doc.addField("location", location); 
      doc.addField("geohash", geohash); 
      doc.addField("popularity", popularity); 


      docs.add(doc); 
      ++_totalSql; 


      if (docs.size() > 1) { 
       // Commit within 5 minutes. 
       UpdateResponse resp = server.add(docs); 
       System.out.println (resp); 
       if (resp.getStatus() != 0) { 
       log("Some horrible error has occurred, status is: " + 
         resp.getStatus()); 
       } 
       docs.clear(); 
      } 
      } 
     } 
     catch (Exception ex) 
     { 
      ex.printStackTrace(); 
     } 
     finally { 
      if (conn != null) { 
      conn.close(); 
      } 
     } 


    } 

    private void endIndexing() throws IOException, SolrServerException { 
      if (docs.size() > 0) { // Are there any documents left over? 
       server.add(docs, 300000); // Commit within 5 minutes 
      } 
      try 
      { 
      server.commit(); 

      } 
      catch (Exception ex) 
      { 

       ex.printStackTrace(); 
      } 


      long endTime = System.currentTimeMillis(); 
      log("Total Time Taken: " + (endTime - _start) + 
       " milliseconds to index " + _totalSql + 
       " SQL rows"); 
      } 





      private indexSolr(String url) throws IOException, SolrServerException { 
       // Create a multi-threaded communications channel to the Solr server. 
      try {  
      server = new HttpSolrServer(url); 

      server.setSoTimeout(1000); // socket read timeout 
      server.setConnectionTimeout(1000); 
      server.setMaxRetries(1); 


      } 
       catch (Exception ex) 
       { 

        ex.printStackTrace(); 

       } 
      } 

} 

回答

1

這就是你需要從Solr的

SolrServer solrServer; 
      String url = "http://localhost:8983/solr/db"; 
      solrServer = new HttpSolrServer(url); 
      solrServer.deleteByQuery("id:30682"); 
      solrServer.commit(); 
      System.out.println("index deleted"); 

做ID刪除行的索引,例如30682我希望它可以幫助別人

相關問題