如何在Solrj中添加多值文字

时间:2019-08-27 11:35:25

标签: solr 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");

这些都不在索引中产生列表。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决方法:

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

ModifiableSolrParams可以处理setParam不能处理的可变参数。