我们正在为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);

08-04 10:45