我们正在为Java SolrJ使用solr嵌入实例。
我想在文档中添加一个多值字段。多值字段是用逗号分隔的字符串。
在Java中,我想这样做:
solrInputDocument.addField(Field1, "value1,value2,value3");
模式中Field1的定义如下
<field name="Field1" type="multiValuedField" indexed="true" stored="true" multiValued="true" required="false"/>
<fieldType name="multiValuedField" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.ClassicTokenizerFactory"/>
</analyzer>
</fieldType>
通过这种配置,我们期望当我们调用addField方法时,Solr能够检查它是否为multiValuedField,因此它将String转换为具有不同值的arrayList。
相反,我们得到的是一个只有一个值的arraylist,它实际上是添加到文档中的原始字符串。
问题:令牌生成器应该解决这个问题,还是在向文档中添加多值字段时由我们自己处理?
谢谢。
最佳答案
SolrInputDocument的addField方法接受一个字符串和一个对象。因此,要处理多值字段,您可以传入带有第二个参数所需值的ArrayList,SolrJ将相应地更新多值字段:
String[] valuesArray = {"value1", "value2", "value3"};
ArrayList<String> values = new ArrayList<String>(Arrays.asList(valuesArray));
solrInputDocument.addField("Field1", values);