使用提取请求处理程序时如何添加多值字段?
文档说
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");
这些都不在索引中产生列表。有什么想法吗?
答案 0 :(得分:1)
我找到了解决方法:
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("literal.keywords", "foo", "bar");
params.set("literal.id", resourceUrl);
...
req.setParams(params);
ModifiableSolrParams
可以处理setParam不能处理的可变参数。