当前位置: 首页 > 知识库问答 >
问题:

如何使用Java更新solr索引的现有字段?

燕飞文
2023-03-14

我在一个包含3000个文档的核心中有一个Solr索引。

我想基于唯一键PaperID修改整个核心中单个字段的值。

if (solrDocument.get("PaperID").equals(solrDocument2.get("PaperID"))) {

    String Mscore = (String) solrDocument.get("ID");
    String ModifyScore = (String) solrDocument.get("Author");

    //solrDocument.setField("ID", ModifyScore);
    //update the field
    System.out.println(Mscore);
    System.out.println(ModifyScore);
    System.out.println(solrDocument2.get("Mscore") + "\n");

    SolrInputDocument sid = new SolrInputDocument();

    Map<String, Object> fieldModifier = new HashMap<String, Object>(1);

    fieldModifier.put("set", ModifyScore);

    sid.setField("ID", fieldModifier);

    //solr.add(sid);
    solr.commit();

}

有没有人能为我指点一下...最诚挚的问候

共有1个答案

麹权
2023-03-14

您的代码没有更改任何内容,因为您已经注释掉了.add命令。您必须在ID字段中使用实际的ID,因为Solr不知道要更新什么文档。要更改的字段应附加fieldModifier:

SolrInputDocument doc = new SolrInputDocument();

Map<String, String> fieldModifier = new HashMap<String, String>();

// Change ModifyScore to the new value, since you're just using the current value now..
fieldModifier.put("set", ModifyScore);

doc.addField("ID", Mscore);
doc.addField("Author", fieldModifier);

solr.add(doc);
solr.commit();
 类似资料:
  • 问题内容: 我正在使用Solr进行索引和搜索。现在,我的新的数据被索引上elasticsearch。如何使用来自Elasticsearch的Solr索引进行组合搜索? 由于Solr和elasticsearch都是基于Apache Lucene 构建的,因此必须有一种方法/插件来使用Elasticsearch的Solr索引,对吗? 我的尝试: 我为此找到了一条河,但是elasticsearch从1.

  • 问题内容: 我正在尝试更新现有的索引文档。我已经索引了标签,标题和所有者字段。现在,当用户更改标题时,我需要在索引中查找并更新文档。 我应该更新和替换整个文档还是仅替换标题字段? 就是行不通。上面的代码生成语法错误。有谁知道使用ElasticSearch的C#NEST客户端执行此操作的正确方法? 问题答案: 我已使用以下方法通过NEST成功更新了Elasticsearch索引中的现有项目。请注意,

  • 问题内容: 我在MySQL表中有两个表字段。一个是VARCHAR,是分类广告(分类网站)的“标题”。另一个是TEXT字段,其中包含用于分类的“文本”。 两个问题: 如何确定如何索引这两个字段? (什么字段类型,要使用什么类,等等) 目前,我有一个“ ad_id”作为每个广告的唯一标识符,例如“ bmw_m3_82398292”。 每当SOLR找到“查询匹配”时,如何使SOLR返回此标识符? (标识

  • 问题内容: 我正在使用Java API对Elasticsearch进行CRUD操作。 我有一个带有嵌套字段的类型,我想更新此字段。 这是我对类型的映射: 当然,我的最终用户类型将具有其他参数。 现在,我想将此文档添加到我的嵌套字段中: 我在文档中搜索有关如何更新嵌套文档的信息,但找不到任何东西。例如,我在字符串中具有先前的JSON对象(我们将此字符串称为json)。我尝试了以下代码,但似乎无法正常

  • 问题内容: 我需要使用Java在Apache Solr中获取索引的总大小。以下代码获取文档总数,但是我正在寻找大小。并通过使用ReplicationHandler,我想我可以得到此链接上某人告诉的索引大小。http://lucene.472066.n3.nabble.com/cheking- the-size-of-the- index-using-solrj-API-s- td692686.ht

  • 我对弹性搜索一无所知。所以,如果这是一个愚蠢的问题,请原谅我,我的问题可能已经在其他地方得到了回答,但我找不到。我想使用弹性搜索作为我的网络中PDF和docx的搜索引擎。我使用fscrawler将PDF文件吸收到弹性搜索中。因为我要摄取的文档是几种语言的,所以我想使用n-graming进行词干分析。为此,我想像这样更新我的映射 现在我收到了这个错误信息 {“error”:{“root_cause”