在Solr中索引和查询CQL3集合映射

时间:2014-10-21 20:16:07

标签: solr cassandra cql3 datastax-enterprise datastax

Datastax的以下documentation page声明:

DSE Search maps collections as follows:
     Collection list and set: multi-valued field
     Collection maps: dynamic field
The name of the dynamic field minus the wildcard is the map name. For example, a map column name dyna* is mapped to dyna. Inner keys are mapped to the full field name.

最后一句话对我来说不是很清楚。字段定义究竟应该是什么样的?假设我在CQL3中有一个定义为scores map<int,int>的集合映射,以下字段定义是否正确?

<field name="scores*" type="int" indexed="true" stored="true"/>

我如何查询?假设地图的值为{201409 : 89, 201410 : 67}并且我想在内部字段&#39; 201410&#39;上进行过滤,则以下是否正确?:

fq=scores201410:[80 TO *]

1 个答案:

答案 0 :(得分:1)

动态字段的名称减去通配符是地图名称意味着以下动态字段对应于CQL中的以下地图名称:

动态字段:<dynamicField name="lang_*" . . . > 地图名称:CREATE TABLE hits ( . . .lang_ map<text, text>, . . .);

在您的示例中,动态字段名称=得分_ *。

查询取决于您在字段中插入的值。如果将这些值插入CQL score_列:

{ 'scores_100'  : '5000'}
 { 'scores_200'  : '10000'}
 { 'scores_100'  : '300'}

然后,我认为获得集合中所有得分_100的查询将是:

的http://:8983 / solr的/ mykeyspace.myscores /选择Q = scores_100%3A *&安培;重量= XML&安培;缩进=真