2016-05-19 24 views
0

scala + solrjを使用する。私はsolrからドキュメントを読み込み、フィールドを追加してからサーバに戻す必要があります。solrjを使用して文書を更新する方法

(コードはScalaであり、言ったように)私は、次のコードのようなものを使用しました:

val doc = client.getById(docId) // can be as result of query also 
val inputDoc = ClientUtils.toSolrInputDocument(doc) 
inputDoc.setField("_version_",0) 
inputDoc.setField("new_field","new value") 
client.add(inputDoc) 
client.commit 

のSolr 5.5 ClientUnits.toSolrInputDocumentが推奨されていませんので。これはどうすればいいですか?

多くのありがとうございます。

+0

これを確認してくださいhttp://stackoverflow.com/questions/12183798/solrj-api-for-partial-document-updateこれはJava向けですが、役立つはずです。 – cheffe

答えて

0

私は(あなたが、あなたのschema.xmlを見てみることができる場合)あなたの文書構造をマップPOJOを作成することをお勧め:

import org.apache.solr.client.solrj.beans.Field; 

public class MyDocument { 

    @Field("id") 
    private Long id; 

    @Field("site") 
    private Integer site; 

    @Field("key") 
    private String key; 

    @Field("suggestions") // Multivalue field 
    private List<String> suggestions; 

    @Field("rank") 
    private Float rankBoost; 
    ... // add getter and setter 

は、あなたはすべてのデータを置くList<MyDocument> docQueueのリストを作成します。

MyDocument doc = new MyDocument(); 
    doc.setKey("test"); 
    docQueue.add(doc); 
    client.addBeans(docQueue); 
    docQueue.clear(); 
    client.commit(); 

多くのドキュメントをお持ちの場合は、500/1000のグループを追加することをおすすめします。環境に適したサイズを選択してください。

関連する問題