首页 > 解决方案 > 如何在 solrj 中添加多值文字

问题描述

使用提取请求处理程序时如何添加多值字段?

文件说

literal.<fieldname> 使用为每个文档提供指定值的名称填充字段。如果字段是多值的,则数据可以是多值的。|

使用大致像这样的代码

HttpSolrClient solr = new HttpSolrClient.Builder("http://localhost:8983/solr/myindex").build();

solr.setParser(new XMLResponseParser());
ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");

ContentStream contentStream = new ContentStreamBase.ByteArrayStream(bytes, xxx);

req.addContentStream(contentStream); 
req.setParam("literal.id", id);
...
req.setParam("literal.keywords", "[foo,bar]");  // Not working

req.setAction(req.getAction().COMMIT, true, true);

我尝试了几种添加多个值的方法,但它以文字形式出现。我试过的:

req.setParam("literal.keywords", "foo,bar");
---
req.setParam("literal.keywords", "[foo,bar]");
---
req.setParam("literal.keywords", "[\"foo\",\"bar\"]");
---
req.setParam("literal.keywords", "foo");
req.setParam("literal.keywords", "bar");

这些都不会导致索引中的列表。有任何想法吗?

标签: solrsolrj

解决方案


我找到了一个解决方案:

ModifiableSolrParams params = new ModifiableSolrParams();
params.set("literal.keywords", "foo", "bar");
params.set("literal.id", resourceUrl);
...
req.setParams(params);

可以处理可变参数,而ModifiableSolrParamssetParam 不能。


推荐阅读