Riak Search 2没有索引存储桶

时间:2016-10-07 14:50:32

标签: python solr riak

我正在使用Riak作为用Python实现的图形数据库的键值存储后端。

我创建了一个名为nodes的自定义search schema。 我创建并激活了一个存储区类型nodes,其中search_index属性设置为nodesdatatype属性设置为map

我将以下数据插入到存储桶default中(存储桶类型为nodes):

key: node1
value: {
    "type_set": {"n1"},
    "foo_set": {"bar", "baz"}
}

NB:数据会自动转换为Map数据类型。

我可以正确获取数据,但我尝试了以下全文搜索,并且没有返回任何文档:

type_set:n1
type_set:*n1*
type_set:*
foo_set:*
_yz_rk:node1
_yz_rk:*

我的文档似乎没有编入索引。

我还尝试将search_type属性设置为nodes上的default,但我得到的结果相同。

参数search在配置文件(on)中设置为/etc/riak/riak.conf,并且已安装OpenJDK 7.

我不知道我做错了什么,如果有人能帮助我,请提前谢谢。

1 个答案:

答案 0 :(得分:1)

首先,您应该考虑到Riak会自动添加后缀_set,因此您不必为type_set type命名。type_set_set:*。否则,您必须查询type_set:*而不是<dynamicField name="*_set" type="string" indexed="true" stored="true" multiValued="true"/>

其次,根据Data Type Schemas,嵌入式模式(与顶级模式相对)必须使用动态字段。显然,Riak使用顶级地图的一些内部标识符来预设字段名称。不幸的是,这也意味着你不能索引一个集合而不索引另一个集合。

我已经进行了一些测试,发现<dynamicField name="*type_set" type="string" indexed="true" stored="true" multiValued="true"/>工作正常,而0000 0000 1111 1111 1111 1111 1111 1111 没有。