Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene 如何更新文档而不丢失字段? CommonHttpSolrServer服务器=新的CommonHttpSolrServer(“http://localhost:8983/solr/"); SolrInputDocument doc1=新的SolrInputDocument(); doc1.添加字段(“id”、“id1”); doc1.添加字段(“名称”、“doc1”); doc1.addField(“价格”,新浮动(10)); SolrInputDocument doc2=新的SolrInputDocument(); doc2.添加字段(“id”、“id1”); doc2.添加字段(“名称”、“doc2”); server.add(doc1); server.add(doc2); commit(); SolrQuery query=新的SolrQuery(); setQuery(“id:id1”); query.addSortField(“price”,SolrQuery.ORDER.desc); QueryResponse rsp=server.query(查询); 迭代器iter=rsp.getResults().Iterator(); while(iter.hasNext()){ SolrDocument doc=iter.next(); 集合字段名=doc.getFieldNames(); 迭代器fieldIter=fieldNames.Iterator(); StringBuffer内容=新的StringBuffer(“”); while(fieldIter.hasNext()){ 字符串字段=fieldIter.next(); content.append(field+”:“+doc.get(field)).append(“”); //系统输出打印项次(字段); } 系统输出打印项次(内容); }_Lucene_Solr - Fatal编程技术网

Lucene 如何更新文档而不丢失字段? CommonHttpSolrServer服务器=新的CommonHttpSolrServer(“http://localhost:8983/solr/"); SolrInputDocument doc1=新的SolrInputDocument(); doc1.添加字段(“id”、“id1”); doc1.添加字段(“名称”、“doc1”); doc1.addField(“价格”,新浮动(10)); SolrInputDocument doc2=新的SolrInputDocument(); doc2.添加字段(“id”、“id1”); doc2.添加字段(“名称”、“doc2”); server.add(doc1); server.add(doc2); commit(); SolrQuery query=新的SolrQuery(); setQuery(“id:id1”); query.addSortField(“price”,SolrQuery.ORDER.desc); QueryResponse rsp=server.query(查询); 迭代器iter=rsp.getResults().Iterator(); while(iter.hasNext()){ SolrDocument doc=iter.next(); 集合字段名=doc.getFieldNames(); 迭代器fieldIter=fieldNames.Iterator(); StringBuffer内容=新的StringBuffer(“”); while(fieldIter.hasNext()){ 字符串字段=fieldIter.next(); content.append(field+”:“+doc.get(field)).append(“”); //系统输出打印项次(字段); } 系统输出打印项次(内容); }

Lucene 如何更新文档而不丢失字段? CommonHttpSolrServer服务器=新的CommonHttpSolrServer(“http://localhost:8983/solr/"); SolrInputDocument doc1=新的SolrInputDocument(); doc1.添加字段(“id”、“id1”); doc1.添加字段(“名称”、“doc1”); doc1.addField(“价格”,新浮动(10)); SolrInputDocument doc2=新的SolrInputDocument(); doc2.添加字段(“id”、“id1”); doc2.添加字段(“名称”、“doc2”); server.add(doc1); server.add(doc2); commit(); SolrQuery query=新的SolrQuery(); setQuery(“id:id1”); query.addSortField(“price”,SolrQuery.ORDER.desc); QueryResponse rsp=server.query(查询); 迭代器iter=rsp.getResults().Iterator(); while(iter.hasNext()){ SolrDocument doc=iter.next(); 集合字段名=doc.getFieldNames(); 迭代器fieldIter=fieldNames.Iterator(); StringBuffer内容=新的StringBuffer(“”); while(fieldIter.hasNext()){ 字符串字段=fieldIter.next(); content.append(field+”:“+doc.get(field)).append(“”); //系统输出打印项次(字段); } 系统输出打印项次(内容); },lucene,solr,Lucene,Solr,问题是我想得到结果“id:id1 name:doc2 price:10.0”,但输出是“id:id1 name:doc2”。。。 因此,我想知道如果我想得到“id:id1 name:doc2 price:10.0”的结果,我如何修改我的编程?当您添加具有相同id的文档时。您基本上添加了两次相同的文档。 Solr将更新/覆盖文档。更新基本上是删除和添加 由于使用相同id添加的第二个文档没有price字段,因此不会添加该文档,也不会在索引中找到它 在添加回文档时,您需要更改和更改所有字段 Commo

问题是我想得到结果“id:id1 name:doc2 price:10.0”,但输出是“id:id1 name:doc2”。。。
因此,我想知道如果我想得到“id:id1 name:doc2 price:10.0”的结果,我如何修改我的编程?

当您添加具有相同id的文档时。您基本上添加了两次相同的文档。 Solr将更新/覆盖文档。更新基本上是删除和添加

由于使用相同id添加的第二个文档没有price字段,因此不会添加该文档,也不会在索引中找到它

在添加回文档时,您需要更改和更改所有字段

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的文档时,您基本上添加了两次相同的文档。 Solr将更新/覆盖文档。更新基本上是删除和添加

由于使用相同id添加的第二个文档没有price字段,因此不会添加该文档,也不会在索引中找到它

在添加回文档时,您需要更改和更改所有字段

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);
}