我使用Riak作为用Python实现的图形数据库的键值存储后端。
我创建了一个名为搜索模式的自定义nodes。我创建并激活了一个桶类型nodes,其中search_index属性设置为nodes,datatype属性设置为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属性设置为桶default上的nodes,但得到了相同的结果。
参数search在配置文件(/etc/riak/riak.conf)中设置为on,并安装了OpenJDK 7。
我不知道我做错了什么,如果有人能帮我的话,谢谢。
发布于 2016-10-07 20:09:07
首先,您应该考虑到Riak会自动添加后缀_set,这样您就不必将type_set命名为type而是命名为type。否则,您将不得不查询type_set_set:*而不是type_set:*。
第二,根据数据类型模式,嵌入式模式(相对于顶层模式)必须使用动态字段。显然,Riak在字段名前面加上了顶级地图的一些内部标识符。不幸的是,这也意味着,如果不为另一组建立索引,就不能对其中一组进行索引。
我已经运行了一些测试,发现<dynamicField name="*_set" type="string" indexed="true" stored="true" multiValued="true"/>可以正常工作,而<dynamicField name="*type_set" type="string" indexed="true" stored="true" multiValued="true"/>则不行。
https://stackoverflow.com/questions/39920110
复制相似问题