- 浏览: 278924 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
langzhe:
Mac 下用 sudo cpan Template,依然不能 ...
第一次 使用 tsung -
langzhe:
<server host='127.0.0.1' por ...
ejabberd/tsung 做压力测试万万不可忽视测试工具问题 -
dlliwei:
jabberd_register.xml 内容如下(我的ser ...
ejabberd/tsung 做压力测试万万不可忽视测试工具问题 -
dlliwei:
你好,我安装tsung后执行命令: tsung -f jabb ...
ejabberd/tsung 做压力测试万万不可忽视测试工具问题 -
bit1129:
这么复杂的一个东西,一句话说完了?
keepalive
现在search查询还是空
Simon 11:53:44
这数据库太新,不好把握,还是用成熟一点的比较好吧
建完bucket,附带了precommit属性,才会建索引
之前的数据是查不出的
Simon 11:54:59
索引里面没有
建索引的时候不会遍历老数据
Android郎哲<langxianzhe@163.com> 11:55:30
我发你我创建的过程你看看,哪里不对
Android郎哲<langxianzhe@163.com> 11:57:56
第一步
Client:set_bucket(<<"g2">>,[{precommit, [{struct,[{<<"mod">>,<<"riak_search_kv_hook">>},{<<"fun">>,<<"precommit">>}]}]}]).
第二步
f(O0),O0 = riak_object:new(<<"g2">>, <<"mine">>, <<"bread">>).
第三步
(riak@127.0.0.1)108> C:put(O0).
ok
我的理解是以上三步就可以完成了
Android郎哲<langxianzhe@163.com> 11:59:36
以下是执行
search的结果
(riak@127.0.0.1)109> search:search_doc(<<"g2">>, <<"bread">>)
(riak@127.0.0.1)109> .
{1,"0.353553",
[{riak_idx_doc,<<"g2">>,<<"mine">>,
[{<<"value">>,<<"bread">>,[{<<"bread">>,[0]}]}],
[],[],true}]}
(riak@127.0.0.1)110> search:search_doc(<<"g2">>, <<"bre">>)
(riak@127.0.0.1)110> .
{0,"0.0",[]}
(riak@127.0.0.1)111> search:search_doc(<<"g2">>)
(riak@127.0.0.1)111> .
{0,"0.0",[]}
(riak@127.0.0.1)112> search:search(<<"g2">>, <<"bread">>)
(riak@127.0.0.1)112> .
{1,
[{<<"g2">>,<<"mine">>,
[{p,[0]},{score,0.35355339059327373}]}]}
(riak@127.0.0.1)113> search:search(<<"g2">>, "bread")
(riak@127.0.0.1)113> .
{1,
[{<<"g2">>,<<"mine">>,
[{p,[0]},{score,0.35355339059327373}]}]}
(riak@127.0.0.1)114> search:search(<<"g2">>, "bre")
(riak@127.0.0.1)114> .
{0,[]}
(riak@127.0.0.1)115> search:search(<<"g2">>)
(riak@127.0.0.1)115> .
{0,[]}
Android郎哲<langxianzhe@163.com> 12:01:15
为什么 search:search(<<"g2">>)和search:search_doc(<<"g2">>) 返回是空的
Simon 12:01:46
不是已经能查出来了吗
(riak@127.0.0.1)112> search:search(<<"g2">>, <<"bread">>)
(riak@127.0.0.1)112> .
{1,
[{<<"g2">>,<<"mine">>,
[{p,[0]},{score,0.35355339059327373}]}]}
Android郎哲<langxianzhe@163.com> 12:02:44
这个是根据具体的key查出来的,模糊的key还查不出来
Simon 12:03:02
模糊查询?
Android郎哲<langxianzhe@163.com> 12:03:07
对
这个不是全文检索功能吗
Simon 12:03:45
试试<<"bre*">>
Android郎哲<langxianzhe@163.com> 12:04:54
<<"bre*">>
可以查出
<<"*re*">>查不出
Simon 12:05:26
我想起来了,反向索引就是用bread这个值建了一个key
Android郎哲<langxianzhe@163.com> 12:05:41
什么意思请详解
Simon 12:05:54
然后把值为bread的key当成一个列表存起来
底层原理就是这样
Android郎哲<langxianzhe@163.com> 12:07:48
你是说它把存储的value当做key索引存储了一边
Simon 12:07:58
让我哭的就是,你想查出值为bread的所有记录,他只是返回key列表,你还得根据这个列表挨个找出value
是的
Android郎哲<langxianzhe@163.com> 12:09:05
再根据Key查找value也好,
<<*re*>>
查不出来如何解释
Simon 12:12:32
一个桶的底层存储结构是这样:
key value
{key, <<"g2">>, <<"mine">>} <<"bread">>
{key, <<"g2">>, <<"you">>} <<"bread">>
{index, <<"g2">>, <<"bread">>} [<<"mine">>,<<"you">>]
只是示意一下,实际的你得看key的组成规则
Android郎哲<langxianzhe@163.com> 12:15:10
嗯明白
Android郎哲<langxianzhe@163.com> 12:16:24
search:search(<<"g2">>)查询为什么查询不到索引呢, 现在仍然是空
(riak@127.0.0.1)144> search:search(<<"g2">>).
{0,[]}
-----26> riakc_pb_socket:search(Pid,<<"g2">>, list_to_binary("<<\"orange\">>:<<\"bread\">>"),[],5000).
{ok,{search_results,[{<<"g2">>,
[{<<"id">>,<<"mine">>},{<<"value">>,<<"bread">>}]},
{<<"g2">>,
[{<<"id">>,<<"your">>},{<<"value">>,<<"orange">>}]}],
0.07724899798631668,2}}
27>
27> riakc_pb_socket:search(Pid,<<"g2">>, list_to_binary("<<\"orange\">><<\"bread\">>"),[],5000).
{ok,{search_results,[{<<"g2">>,
[{<<"id">>,<<"mine">>},{<<"value">>,<<"bread">>}]},
{<<"g2">>,
[{<<"id">>,<<"your">>},{<<"value">>,<<"orange">>}]}],
0.07724899798631668,2}}
* 2: syntax error before: '.'
35> riakc_pb_socket:search(Pid,<<"g2">>, list_to_binary("orangebread"),[],5000).
{ok,{search_results,[],0.0,0}}
36> riakc_pb_socket:search(Pid,<<"g2">>, list_to_binary("orange\"\"bread"),[],5000).
{ok,{search_results,[{<<"g2">>,
[{<<"id">>,<<"mine">>},{<<"value">>,<<"bread">>}]},
{<<"g2">>,
[{<<"id">>,<<"your">>},{<<"value">>,<<"orange">>}]}],
0.2959290146827698,2}}
53> riakc_pb_socket:search(Pid,<<"g2">>, "br*\"\"or*").
{ok,{search_results,[{<<"g2">>,
[{<<"id">>,<<"mine">>},{<<"value">>,<<"bread">>}]},
{<<"g2">>,
[{<<"id">>,<<"your">>},{<<"value">>,<<"orange">>}]}],
0.0,2}}
54>
73> riakc_pb_socket:search(Pid,<<"g2">>, HerBin).
{ok,{search_results,[{<<"g2">>,
[{<<"id">>,<<"her">>},
{<<"value">>,
<<131,108,0,0,0,2,104,2,107,0,4,110,97,109,101,107,0,
2,...>>}]}],
0.35355299711227417,1}}
74> HerBin.
<<131,108,0,0,0,2,104,2,107,0,4,110,97,109,101,107,0,2,
120,119,104,2,107,0,1,115,107,0,1,...>>
75> binary_to_term(HerBin).
[{"name","xw"},{"s","d"}]
76> riakc_pb_socket:search(Pid,<<"g2">>, HerBin).
{ok,{search_results,[{<<"g2">>,
[{<<"id">>,<<"her">>},
{<<"value">>,
<<131,108,0,0,0,2,104,2,107,0,4,110,97,109,101,107,0,
2,...>>}]}],
0.35355299711227417,1}}
77>
--------------------------------
(riak@127.0.0.1)43> lucene_scan:string("name:jason").
{ok,[{string,1,"name"},{scope,1,":"},{string,1,"jason"}],1}
(riak@127.0.0.1)45> lucene_scan:string("namejason*").
{ok,[{wildcard_glob,1,"namejason*"}],1}
[{'query',[{wildcard_glob,1,"namejason*"}]}, {'filter', []}];
[{'query', QueryOps}, {'filter', FilterOps}];
-----------------------------9> riakc_pb_socket:put(Pid,O).
ok
50> riakc_pb_socket:list_buckets(Pid).
{ok,[<<"user">>]}
51> riakc_pb_socket:set_bucket(Pid, <<"user">>, [{precommit, [{struct,[{<<"mod">>,<<"riak_search_kv_hook">>},{<<"fun">>,<<"precommit">>}]}]}]).
ok
52> riakc_pb_socket:list_buckets(Pid).
{ok,[<<"user">>]}
53> f(O),O=riakc_obj:new(<<"user">>, <<"jason">>, list_to_binary("[{\"name\":\"jason\"},{\"sex\":\"male\"}]"), "application/json").
{riakc_obj,<<"user">>,<<"jason">>,undefined,[],
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],[],[[<<...>>|...]],[],[],...}}},
<<"[{\"name\":\"jason\"},{\"sex\":\"male\"}]">>}
54> riakc_pb_socket:put(Pid,O).
ok
55> riakc_pb_socket:list_buckets(Pid).
{ok,[<<"user">>]}
56> riakc_pb_socket:set_bucket(Pid, <<"user">>, [{precommit, [{struct,[{<<"mod">>,<<"riak_search_kv_hook">>},{<<"fun">>,<<"precommit">>}]}]}]).
ok
57> riakc_pb_socket:set_bucket(Pid, <<"users">>, [{precommit, [{struct,[{<<"mod">>,<<"riak_search_kv_hook">>},{<<"fun">>,<<"precommit">>}]}]}]).
ok
58> f(O),O=riakc_obj:new(<<"users">>, <<"jason">>, list_to_binary("[{\"name\":\"jason\"},{\"sex\":\"male\"}]"), "application/json").
{riakc_obj,<<"users">>,<<"jason">>,undefined,[],
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],[],[[<<...>>|...]],[],[],...}}},
<<"[{\"name\":\"jason\"},{\"sex\":\"male\"}]">>}
59> riakc_pb_socket:put(Pid,O).
ok
60> f(O),O=riakc_obj:new(<<"user2">>, <<"jason">>, list_to_binary("[{\"name\":\"jason\"},{\"sex\":\"male\"}]"), "application/json").
{riakc_obj,<<"user2">>,<<"jason">>,undefined,[],
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],[],[[<<...>>|...]],[],[],...}}},
<<"[{\"name\":\"jason\"},{\"sex\":\"male\"}]">>}
61> riakc_pb_socket:put(Pid,O).
ok
62> riakc_pb_socket:search(Pid, <<"users">>, "sdf").
{ok,{search_results,[],0.0,0}}
63> riakc_pb_socket:search(Pid, <<"users">>, "name:jason").
{ok,{search_results,[],0.0,0}}
64> riakc_pb_socket:search(Pid, <<"users">>, <<"name:jason">>).
{ok,{search_results,[],0.0,0}}
65> riakc_pb_socket:search(Pid, <<"users">>, "\"name\":\"jason\"").
{ok,{search_results,[],0.0,0}}
66> riakc_pb_socket:search(Pid, <<"users">>, list_to_binary("\"name\":\"jason\"")).
{ok,{search_results,[],0.0,0}}
67> riakc_pb_socket:search(Pid, <<"user3">>, list_to_binary("\"name\":\"jason\"")).
{ok,{search_results,[],0.0,0}}
68> riakc_pb_socket:search(Pid, <<"user2">>, list_to_binary("\"name\":\"jason\"")).
{ok,{search_results,[{<<"user2">>,
[{<<"id">>,<<"jason">>},
{<<"name">>,<<"jason">>},
{<<"sex">>,<<"male">>}]}],
0.35355299711227417,1}}
69> riakc_pb_socket:search(Pid, <<"user2">>, list_to_binary("\"sex\":\"male\"")).
{ok,{search_results,[{<<"user2">>,
[{<<"id">>,<<"jason">>},
{<<"name">>,<<"jason">>},
{<<"sex">>,<<"male">>}]}],
0.35355299711227417,1}}
70> riakc_pb_socket:search(Pid, <<"users">>, "\"name\":\"jason\"").
{ok,{search_results,[],0.0,0}}
71> riakc_pb_socket:search(Pid, <<"user2">>, list_to_binary("\"name\":\"jason\"")).
{ok,{search_results,[{<<"user2">>,
[{<<"id">>,<<"jason">>},
{<<"name">>,<<"jason">>},
{<<"sex">>,<<"male">>}]}],
0.35355299711227417,1}}
72> riakc_pb_socket:search(Pid, <<"user2">>, list_to_binary("\"sex\":\"male\"")).
{ok,{search_results,[{<<"user2">>,
[{<<"id">>,<<"jason">>},
{<<"name">>,<<"jason">>},
{<<"sex">>,<<"male">>}]}],
0.35355299711227417,1}}
73> riakc_pb_socket:search(Pid, <<"user2">>, list_to_binary("\"sex\":\"mal*\"")).
{ok,{search_results,[],0.0,0}}
74> riakc_pb_socket:search(Pid, <<"user2">>, list_to_binary("\"sex\":\"male\"")).
{ok,{search_results,[{<<"user2">>,
[{<<"id">>,<<"jason">>},
{<<"name">>,<<"jason">>},
{<<"sex">>,<<"male">>}]}],
0.35355299711227417,1}}
sss
-----------------------------------------------模糊匹配查询-------------------------------------------
(ejabberd@meta)56> riakc_pb_socket:search(Pid, <<"user1">>, list_to_binary("\"name\":\"jaso*\"")).
{ok,{search_results,[],0.0,0}}
(ejabberd@meta)57> riakc_pb_socket:search(Pid, <<"user1">>, list_to_binary("\"name\":jason*")).
{ok,{search_results,[{<<"user1">>,
[{<<"id">>,<<"jason">>},
{<<"name">>,<<"jason">>},
{<<"sex">>,<<"male">>}]}],
0.0,1}}
(ejabberd@meta)58> riakc_pb_socket:search(Pid, <<"user1">>, list_to_binary("\"name\":ja*")).
{ok,{search_results,[{<<"user1">>,
[{<<"id">>,<<"jason">>},
{<<"name">>,<<"jason">>},
{<<"sex">>,<<"male">>}]}],
0.0,1}}
(ejabberd@meta)59> riakc_pb_socket:search(Pid, <<"user1">>, list_to_binary("\"name\":*")).
{ok,{search_results,[],0.0,0}}
(ejabberd@meta)60> riakc_pb_socket:search(Pid, <<"user1">>, list_to_binary("\"name\":j*")).
{ok,{search_results,[],0.0,0}}
(ejabberd@meta)61> riakc_pb_socket:search(Pid, <<"user1">>, list_to_binary("\"name\":ja*")).
{ok,{search_results,[{<<"user1">>,
[{<<"id">>,<<"jason">>},
{<<"name">>,<<"jason">>},
{<<"sex">>,<<"male">>}]}],
0.0,1}}
(ejabberd@meta)62>
发表评论
-
解决更新自定义mapreduce代码 需要riak重启问题
2013-10-23 12:39 1131解决更新自定义代码riak重启问题 1、创建自定 ... -
两个周前挖了一个坑,现在跳了进去<riak mapreduce 分析>,顺便能实现分页功能了
2013-08-08 18:36 789我现在有一个这样的bucket id follow ... -
riak mapreduce worker_limit_reached 错误
2013-07-09 16:10 10781、 =ERROR REPORT==== 9-Jul-2 ... -
riak mapreduce worker_limit_reached 错误
2013-07-09 16:10 01、 =ERROR REPORT==== 9-Jul-2 ... -
riak second index 组合键
2012-11-13 14:17 680(ejabberd@meta)51> eja ... -
Riak failed to start within 15 seconds
2012-11-01 15:02 1114兄弟反应riak无法启动,一开始没仔细看,后来网上 ... -
riak erlanl client search 新特性
2012-10-11 15:27 631新特性,返回结果:可以指定需要的列,并返回记录数。 C ... -
[MapReduce] in state wait_for_input terminated with reason: processing_error
2012-09-26 15:25 705解决方法:添加riak_kv_util:is_x_delete ... -
根据 Second Index和 mapred查询数据
2012-07-27 18:17 690application 查询方法 get_last_i ... -
The "modfun" input type is not widely used outside of Riak
2012-07-20 16:00 627Hi, Jason. The "modfun&quo ... -
riak MapReduce 中的 {index, bucket(), Index::binary(), key()} 使用方法
2012-07-16 20:16 743----------这是客户端测试代码--------- ... -
MapReduce riak
2012-07-05 18:18 6841、今天看了一下riak的mapred/3/4/5方法,以下几 ... -
Secondary Indexes in nosql of riak
2012-07-04 17:26 833官方文档 http://wiki.basho.com/Sec ... -
riak C:get() 后台跑出异常 > in state waiting_vnode_r terminated with re
2011-12-06 11:24 796(riaktest@127.0.0.1)6> O0 ...
相关推荐
注意:为了支持 YCSB 的扫描操作,您必须在集群中的每个节点上启用 Riak Search。 有关启用搜索的说明,请参阅: : 如何实现 Riak 客户端以下说明将帮助您开始使用 YCCB 项目和 Riak 客户端对 Riak 进行基准测试。 ...
riak-ruby-client, 用于 ruby的Riak客户端 ) 客户端( Riak客户机)riak-client 是一个富 ruby 客户端/工具箱,分布在,数据库中,包含典型操作的基本包装。在 http://basho.github.io/riak-ruby-client/ 可以使用详尽...
Laravel开发-laravel-riak RIAK连接、缓存和会话的RIAK提供程序
学习使用Riak
riak-session-manager 是使用 Riak 来存储 Tomcat session 信息的项目。 配置方法: <?xml version="1.0" encoding="UTF-8"?> <Manager className="com.jbrisbin.vpc.riak.session.RiakManager" ...
Laravel开发-laravel-riak-auth Laravel的RIAK身份验证提供程序
带有 NodeJS 的 Riak 命令行工具。 有更好的解决方案,请参考 ->使用带有curl的Riak http api查询riak真的很烦人! 于是工具诞生了。 干杯! 这是一个 Riak 终端查询工具,提供基本的 POST/PUT/DELETE/GET 等方法。...
横纲Yokozuna-水平绳。 相扑中通常排名最高的冠军,通常被翻译成总冠军。... Yokozuna是Riak Search在Apache Solr之上构建的新实现。 下载尝试Yokozuna。 有关更多信息,请参见。建立状态掌握: 开发:
欢迎来到Riak。 概述 Riak是分布式,分散式数据存储系统。 在Wiki中,您将找到设置和使用Riak的“快速入门”指导。 有关更多信息,请浏览以下文件: 自述文件:此文件 许可证:Riak的发布许可证 doc / admin.org...
使用Riak作为后端的服务器监视 该项目是我的学士学位工作的一部分: “ NoSQL数据库和应用程序的比较分析” 米兰比可卡大学 关联者:安德烈·毛里诺(Andrea Maurino) 联合主持人:Blerina Spahiu 讲解 先决条件 ...
linux riak erlang,otp_src_20.3
riak-java-client, Java的Riak客户端 Java客户端客户端 客户端支持与 通信,它是一个开源的分布式数据库,专注于高可用性。水平可伸缩性和可以预测的可以预测的实时延时。 Riak和这段代码都由 Basho维护。Java客户端...
riak-manage riak管理工具集是一个管理Riak KV集群的项目。 是一个开放源代码的分布式数据库,专注于高可用性,水平可伸缩性和可预测的延迟。 关于此Beta项目的说明: 此软件不应在生产环境中使用。 该软件不能...
riak-admin 到目前为止的功能 显示桶的内容 单击时显示文档内容 编辑文档内容(json.object) 删除单个文档或存储桶的所有文档 用法 git clone git://github.com/frank06/riak-admin cd riak-admin && git ...
Riak协议缓冲区消息 master : develop : 该存储库包含的基于协议缓冲区的接口的消息定义,以及消息类型的各种Erlang特定的实用程序模块。 它与Riak服务器和客户端分开分发,从而使其可用作受支持消息的独立表示...
波纹 安装和管理 Riak 涟漪云存储 riak/cs.sls 将安装 riak-cs、riak-cs-control 和 stanchion 包。
Riak JSON编辑器 用于Riak的JSON编辑器(NOSQL DB)。 不建议使用,而不要使用此命令:...
里亚克核心 Riak Core是分布式系统框架,是分发数据和扩展规模的基础。 更一般而言,可以将其视为构建分布式,可伸缩,容错应用程序的工具包。 对于Riak Core的一些介绍性阅读(这不是纯粹的代码), 有一个古老但...
适用于PHP的Riak客户端 Riak PHP Client... 运行以下命令: $ composer require " basho/riak " : " 3.0.* " 或者,在require部分中将以下内容手动添加到您的composer.json中: "require" : { "basho/riak" : "3.0.*"}
riak_pg, 带riak_core的分布式进程组 概述带riak_core的分布式进程组。用法将进程加入组( 不需要预先声明)join(term(), pid()) -> ok | {error, timeout}.如何删除?leave