为什么下面的java代码不会更新solr文档?

问题描述 投票:0回答:1

假设我有一个 solr 集合(包含 id、路径、名称、类型等多个字段的 SmartDocument),我想更新一个名为 ai_finished 的特定字段。我首先检索 smartDocument,然后相应地* 填充 SolrInputDocument,用 false 值更改字段,然后提交更改。 结果?如果我查询 solr,它会更改 ai_finished 大约一秒钟,然后恢复到旧值。为什么会这样呢? 这是我在java中尝试过的代码:

SolrConfigIndependently solrConfigIndependently = new SolrConfigIndependently();
        HttpSolrClient solrClient = solrConfigIndependently.solrHttpClient(solrURL, coreName);

        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", documentId);

        try {
            SmartDocument sd = this.searchDocById(documentId, coreName);

            document = SolrInputDocumentMapper.createSolrDocumentFromSmartBox(sd);
            Map<String,String> AI_FINISHED= new HashMap<>();
            AI_FINISHED.put("set", "false");
            document.setField(SmartDocumentEnum.AI_FINISHED.getValue(),AI_FINISHED);

        } catch (IOException e) {
            e.printStackTrace();
        }

        // Update the smartDocument
        try {
            solrClient.add(document);
            solrClient.commit();
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Close the Solr client
        try {
            solrClient.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

我需要做什么才能实际提交更改?

我已经发布了我向上尝试的代码

java solr
1个回答
0
投票

您似乎正在更新 Solr 中的字段,但更改不会持续。该问题可能与您的代码有关,特别是与您创建 SolrInputDocument 的方式有关。我看到您正在获取 SmartDocument,然后修改文档对象。您应该更新特定字段然后提交,而不是替换整个文档。

© www.soinside.com 2019 - 2024. All rights reserved.