如何使用solrj更新文档

时间:2016-05-19 17:08:14

标签: scala solr solrj

使用scala + solrj。我需要从solr中读取文档,向其中添加字段,然后将其放回服务器中。

我使用了类似下面的代码(如上所述,代码在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。我现在应该怎么做?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我建议创建一个映射文档结构的pojo(如果可以,请查看schema.xml):

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组。选择适合您环境的尺寸。