gpt4 book ai didi

java - SolrJ - 我无法更新所有 Solr 文档的具体字段的值

转载 作者:行者123 更新时间:2023-12-01 14:19:52 25 4
gpt4 key购买 nike

我已经为我的问题编写了真正的硬编码解决方案,但应该没问题。我需要编辑索引中所有文档的具体字段的一些值。我的索引中有 55500 个文档。

我正在尝试编辑每个文档的字段并提交 500 个文档。我认为这个解决方案应该有效(我试图通过 id 从我的索引中删除一个文档,它被删除了)但是我的索引没有变化...仍然有一些字段具有错误值(带有 #0; 我想要删除)

    for (int i = 0; i < 55501; i = i + 500) {
SolrQuery query = new SolrQuery();
query.setParam("start", i+"");
query.setParam("q", "*:*");
query.setParam("rows", "500");

String url = "http://MYINDEX";
HttpSolrServer solrServer = new HttpSolrServer(url);

QueryResponse qResponse;
try {
qResponse = solrServer.query(query);
SolrDocumentList docs=qResponse.getResults();
for (SolrDocument solrDocument : docs) {
String parseTime = (String) solrDocument.getFieldValue("parse_time");
String parseTimeUnix = (String) solrDocument.getFieldValue("parse_time_unix_timestamp");
parseTime = parseTime.replaceAll("#0;", "");
parseTimeUnix = parseTimeUnix.replaceAll("#0;", "");
solrDocument.setField("parse_time", parseTime);
solrDocument.setField("parse_time_unix_timestamp", parseTimeUnix);
}

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

try {
solrServer.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

您需要将更新的文档发送回Solr以进行更新。

在调用 commit 将它们发回之前,请使用添加命令 solrServer.add(docs);。请参阅下面更新的代码片段。

 ...
try {
solrServer.add(docs);
solrServer.commit();
}
...

关于java - SolrJ - 我无法更新所有 Solr 文档的具体字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17706296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com