CommonsHttpSolrServer server = new CommonsHttpSolrServer("http://localhost:8983/solr/");
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField("id", "id1");
doc1.addField("name", "doc1");
doc1.addField("price", new Float(10));
SolrInputDocument doc2 = new SolrInputDocument();
doc2.addField("id", "id1");
doc2.addField("name", "doc2");
server.add(doc1);
server.add(doc2);
server.commit();
SolrQuery query = new SolrQuery();
query.setQuery("id:id1");
query.addSortField("price", SolrQuery.ORDER.desc);
QueryResponse rsp = server.query(query);
Iterator<SolrDocument> iter = rsp.getResults().iterator();
while(iter.hasNext()){
SolrDocument doc = iter.next();
Collection fieldNames = doc.getFieldNames();
Iterator<String> fieldIter = fieldNames.iterator();
StringBuffer content = new StringBuffer("");
while(fieldIter.hasNext()){
String field = fieldIter.next();
content.append(field+":"+doc.get(field)).append(" ");
//System.out.println(field);
}
System.out.println(content);
}
问题是我想得到结果“id:id1 name:doc2 price:10.0”,但输出是“id:id1 name:doc2”... 所以我想知道我是否想要将结果作为“id:id1 name:doc2 price:10.0”,我该如何修改我的编程?
答案 0 :(得分:1)
在添加具有相同ID的文档时。您基本上是两次添加相同的文档。 Solr将更新/覆盖文档。更新基本上是删除和添加。
由于您使用相同ID添加的第二个文档没有价格字段,因此不会添加它,也不会将其作为索引。
在添加文档时,您需要更改所有字段并保持不变。
doc2.addField("price", new Float(10)); // should add it back to the document