2016-04-03 1 views
1

私の意図はPOJOを使用してsolrを更新することです。私はsolrServerとaddBeanメソッドを使用してフィールド(ID)を更新しようとしています。POJOを直接solrに更新できません

プログラムは正しく実行されていますが、私はsolrで自分のアップデートを見ることができません。コード内で何が間違っているのか教えてください。私もフィールドを追加するためにSolrInputDocumentを使ってみました。うまくいきました(スニペットのコメント付きコード)。 POJOをsolrに直接追加することに関して、答えを提供していただければ大変助かります。これはコードです:

import org.apache.solr.client.solrj.beans.Field; 
public class Item { 
      @Field 
      String id; 
     } 

package stockjournalist; 
import java.io.IOException; 

import org.json.simple.JSONObject; 

import org.apache.solr.*; 
import org.apache.solr.client.solrj.request.DirectXmlRequest; 
import org.apache.solr.client.solrj.request.LukeRequest; 
import org.apache.solr.client.solrj.request.SolrPing; 
import org.apache.solr.client.solrj.response.LukeResponse; 
import org.apache.solr.client.solrj.response.QueryResponse; 
import org.apache.solr.client.solrj.response.FacetField; 
import org.apache.solr.client.solrj.response.UpdateResponse; 
import org.apache.solr.client.solrj.util.ClientUtils; 
import org.apache.solr.common.SolrInputDocument; 
import org.apache.solr.common.util.XML; 
import org.apache.solr.common.params.FacetParams; 
import org.apache.solr.client.solrj.SolrServer; 
import org.apache.solr.client.solrj.SolrServerException; 
import org.apache.solr.client.solrj.impl.HttpSolrServer; 
import org.apache.solr.client.solrj.impl.*; 
import org.apache.solr.client.solrj.beans.Field; 

public class JsonSample { 

    public static void main(String args[]) throws IOException, SolrServerException{ 
     JsonSample js = new JsonSample(); 
     js.insertOneDoc(); 
    } 
    private SolrServer getSolrServer(){ 
      String server = "http://localhost:8983/solr"; 
      SolrServer solrServer = null; 
      solrServer = new HttpSolrServer(server); 
      return solrServer; 
    } 
    public void insertOneDoc() throws SolrServerException, IOException { 
      Item item = new Item(); 
      item.id = "5137158701"; 
      SolrServer server = getSolrServer(); 
      server.addBean(item); 
      server.commit(); 
      //String urlString = "http://localhost:8983/solr"; 
      //HttpSolrServer solr = new HttpSolrServer(urlString); 
      //SolrInputDocument doc = new SolrInputDocument(); 
      //doc.addField("id", "552199"); 
      //doc.addField("name", "See if 513715870 is available in the index."); 
      //solr.add(doc); 
      //solr.commit(); 
     } 
} 

おかげ

答えて

0

あなたは

  1. あなたsolrjバージョンとSolrのバージョンを確認することができますしてください。同じでなければならない!
  2. 更新の戻り値を印刷します。 org.apache.solr.client.solrj.response。 UpdateResponseここからSolrServerのメッセージを受け取り、ここで返答してください。

    public void insertOneDoc() throws SolrServerException, IOException { 
    Item item = new Item(); 
    item.id = "5137158701"; 
    SolrServer server = getSolrServer(); 
    
    //DEBUG 
    UpdateResponse resp= server.addBean(item); 
    System.out.println("SolrResponse:"+ r.getStatus() + r.getElapsedTime()); 
    for(Entry<String, Object> o: r.getResponse()){ 
        System.out.println("SolrResponse - response :"+ o.getKey() + o.getValue().toString()); 
    } 
    server.commit(); 
    

    }

  3. はsolrconfig.xml、Solrの管理者http://localhost:8983/solr/#/~logging

  4. シェアあなたのschema.xmlに
ログを参照してください
関連する問題