0
我已經爲我的問題編寫了真正的硬編碼解決方案,但它應該沒問題。我需要爲索引中的所有文檔編輯一些具體字段的值。我的索引中有55500個文檔。SolrJ - 我無法更新所有Solr文檔的具體字段的值
我想編輯每個文檔的字段並提交500個文檔。我認爲這個解決方案應該工作(我試圖從我的索引中刪除一個id爲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();
}
}
謝謝你的建議。 solrServer.add()應該在那裏,並且必須有SolrInputDocument sid = org.apache.solr.client.solrj.util.ClientUtils.toSolrInputDocument(solrDocument);然而......將SolrDocument轉換爲SolrInputDocument –
是的,我忘了你需要傳遞一個SolrInputDocument進行更新,並很高興你找到了ClientUtils.toSolrInputDocument方法。 –