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");
这些都不会导致索引中的列表。有任何想法吗?
解决方案
我找到了一个解决方案:
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("literal.keywords", "foo", "bar");
params.set("literal.id", resourceUrl);
...
req.setParams(params);
可以处理可变参数,而ModifiableSolrParams
setParam 不能。
推荐阅读
- c# - c# 以编程方式设置或清除文件的“已访问”元信息
- git - 寻找一个在关闭文件时自动提交 git 的文本编辑器
- email - BIND DKIM 语法错误
- javascript - 我想在这段代码中显示 Fetched API
- geode - 获取 java.lang.IllegalStateException:无法在定位器中创建区域
- linux - 无法使用 ffmpeg 录制窗口
- angular - 带有静态数据的材料设计数据表布局
- javascript - jQuery自定义手风琴,关闭其他打开的li
- c# - 即使在文本框中没有输入任何内容,C# 我也在尝试进行自动完成显示
- dart - Dart build_runner 只能扫描/读/写 web/ 目录下的文件?