Solr中“multiValued”字段types的用法是什么?

我是Apache Solr的新手。 即使阅读了文档部分,我也发现很难清楚地理解multiValued字段types属性的function和用法。

Solr在内部执行/处理/处理标记为multiValued的字段?

Solr在多值字段和非多值字段之间索引的区别是什么?

有人可以用一个很好的例子来解释吗?

Doc说:

多值= TRUE | FALSE

如果此字段可能包含每个文档的多个值(即文档中可能出现多次),则为true

当有多个值存在于字段中时,多值字段非常有用。 一个简单的例子就是标签,可以有多个标签需要被索引。 所以如果我们将标签字段设置为多值,则solr响应将返回一个列表而不是一个string值。 需要注意的一点是,您需要为每个标签的值提交多行:

 <field name =“tags”> tag1 </ tags>
 <field name =“tags”> tag2 </ tags>
 ...
 <field name =“tags”> tagn </ tags>

一旦你有所有的价值指数,你可以search或筛选结果的任何值,例如,克。 你可以使用类似查询的方式find所有带有tag1的文档

 q=tags:tag1 

或者使用标签过滤掉结果

 q=query&fq=tags:tag1 

在模式中定义的multiValued是否允许该字段具有多个值。

例如:
如果我有一个被称为ID的fieldType multiValued = false索引一个这样的文件:

 doc { id : [ 1, 2] ... } 

会导致在索引线程中引发exception,并且文档不会被索引(模式validation将失败)。

另一方面,如果我确实有一个字段的多个值,我想设置multiValued = true,以保证索引正确完成,例如:

 doc { id : 1 keywords: [ hello, world ] ... } 

在这种情况下,您可以将“关键字”定义为multiValued字段。

我只用复制字段使用多个值字段,所以想这样,所有字段将是单值,除非它是一个复制字段,例如我有以下字段:

 <field name="id" type="string" indexed="true" stored="true"/> <field name="name" type="string" indexed="true" stored="true"/> <field name="subject" type="string" indexed="true" stored="true"/> <field name="location" type="string" indexed="true" stored="true"/> 

我只想查询一个字段,并可能search上面的所有4个字段,那么我们需要使用复制域。 首先创build一个新的字段调用“全部”,然后将所有内容复制到“全部”

 <field name="all" type="text" indexed="true" stored="true" multiValued="true"/> <copyField source="*" dest="all"/> 

现在,“所有”字段需要被多值化。

Interesting Posts