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

Java SolrJ-我无法更新所有Solr文档的具体字段的值,java,solr,solrj,Java,Solr,Solrj,我已经为我的问题编写了真正的硬编码解决方案,但应该没问题。我需要为索引中的所有文档编辑一些具体字段的值。我的索引中有55500个文档 我试图编辑每个文档的字段,并提交500个文档。我认为这个解决方案应该有效(我试图从索引中删除一个id为的文档,但它被删除了),但我的索引没有任何变化。。。仍有一些字段的值不正确(带有#0;我要删除这些值) for(int i=0;i

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

我试图编辑每个文档的字段,并提交500个文档。我认为这个解决方案应该有效(我试图从索引中删除一个id为的文档,但它被删除了),但我的索引没有任何变化。。。仍有一些字段的值不正确(带有#0;我要删除这些值)

for(int i=0;i<55501;i=i+500){
SolrQuery query=新的SolrQuery();
setParam(“start”,i+);
query.setParam(“q”、“*:*”);
query.setParam(“行”,“500”);
字符串url=”http://MYINDEX";
HttpSolrServer solrServer=新的HttpSolrServer(url);
QueryResponse qResponse;
试一试{
qResponse=solrServer.query(query);
SolrDocumentList docs=qResponse.getResults();
for(解决文档解决文档:文档){
String parseTime=(String)solrDocument.getFieldValue(“parse_time”);
字符串parseTimeUnix=(字符串)solrDocument.getFieldValue(“parse_time_unix_timestamp”);
parseTime=parseTime.replaceAll(“#0;”,”);
parseTimeUnix=parseTimeUnix.replaceAll(#0;,“”);
setField(“parse_time”,parseTime);
setField(“parse_time_unix_timestamp”,parseTimeUnix);
}
}捕获(SolrServer异常){
e、 printStackTrace();
}
试一试{
提交();
}捕获(SolrServer异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}           
}

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

使用Add命令
solrServer.Add(docs)在调用commit将其发送回之前。请参阅下面更新的代码段

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

谢谢你的建议。solrServer.add()应该存在,并且必须存在SolrInputDocument sid=org.apache.solr.client.solrj.util.ClientUtils.toSolrInputDocument(solrDocument);然而要将SolrDocument转换为SolrInputDocument是的,我忘记了需要传递SolrInputDocument进行更新,很高兴您找到了ClientUtils.toSolrInputDocument方法。
 ...
 try {
     solrServer.add(docs);
     solrServer.commit();
 }
 ...