假设我有一个 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();
}
我需要做什么才能实际提交更改?
我已经发布了我向上尝试的代码
您似乎正在更新 Solr 中的字段,但更改不会持续。该问题可能与您的代码有关,特别是与您创建 SolrInputDocument 的方式有关。我看到您正在获取 SmartDocument,然后修改文档对象。您应该更新特定字段然后提交,而不是替换整个文档。