在solr中更新文档

时间:2014-02-25 12:06:13

标签: solr

我想在solr中更新文档的特定字段。然而,当试图这样做其他 文档的字段变为空。

    CommonsHttpSolrServer server = new CommonsHttpSolrServer("http://mydomain:8983/solr/index_socialmedia/");
    List<SolrInputDocument> solrInputDocsList = new ArrayList<SolrInputDocument>();

    SolrInputDocument solrInputDoc = new SolrInputDocument();

    solrInputDoc.addField("id","427832898745234516478592");
    solrInputDoc.addField("city","Kolkata");


    solrInputDocsList.add(solrInputDoc);

    server.add(solrInputDocsList);
    server.commit();

在上面的代码中,“id”字段是唯一字段。 我该如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

我尝试使用以下代码段。它可以进行部分更新。试试这个。

SolrServer server = new HttpSolrServer("http://mydomain:8983/solr/index_socialmedia/");

SolrInputDocument solrInputDoc = new SolrInputDocument();
Map<String, String> update = new HashMap<String, String>();
update.put("set", "Kolkata");

solrInputDoc.addField("id","427832898745234516478592");
solrInputDoc.addField("city", update);

server.commit();

答案 1 :(得分:0)

在solr schema.xml中设置<uniqueKey>id</uniqueKey>

答案 2 :(得分:0)

您使用的是哪个solr版本?  如果它低于4.0,则solr不支持单字段更新(部分更新) 因此,在您的情况下,将删除现有的旧文档,并插入具有相同ID的新文档 (理由Solr不支持单字段或部分更新是lucene不支持部分更新)

如果您使用Solr 4.0,可以参考此solrj api for partial document update