`
langzhe
  • 浏览: 278924 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

riak search

    博客分类:
  • riak
 
阅读更多

 

 

现在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> 

---------------------------------------

riak search 查询中文问题,查了好多资料也没有解决,最后我不得不把所有字段用base64来编码,查询也是把条件编码完在查询的
分享到:
评论

相关推荐

    YCSB-Riak-Binding

    注意:为了支持 YCSB 的扫描操作,您必须在集群中的每个节点上启用 Riak Search。 有关启用搜索的说明,请参阅: : 如何实现 Riak 客户端以下说明将帮助您开始使用 YCCB 项目和 Riak 客户端对 Riak 进行基准测试。 ...

    riak-ruby-client, 用于 ruby的Riak客户端.zip

    riak-ruby-client, 用于 ruby的Riak客户端 ) 客户端( Riak客户机)riak-client 是一个富 ruby 客户端/工具箱,分布在,数据库中,包含典型操作的基本包装。在 http://basho.github.io/riak-ruby-client/ 可以使用详尽...

    Laravel开发-laravel-riak

    Laravel开发-laravel-riak RIAK连接、缓存和会话的RIAK提供程序

    Riak 学习文档

    学习使用Riak

    riak-session-manager.zip

    riak-session-manager 是使用 Riak 来存储 Tomcat session 信息的项目。 配置方法:   &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;Manager className="com.jbrisbin.vpc.riak.session.RiakManager" ...

    Laravel开发-laravel-riak-auth

    Laravel开发-laravel-riak-auth Laravel的RIAK身份验证提供程序

    riak-cli:Riak 命令行客户端

    带有 NodeJS 的 Riak 命令行工具。 有更好的解决方案,请参考 -&gt;使用带有curl的Riak http api查询riak真的很烦人! 于是工具诞生了。 干杯! 这是一个 Riak 终端查询工具,提供基本的 POST/PUT/DELETE/GET 等方法。...

    yokozuna:Riak + Solr

    横纲Yokozuna-水平绳。 相扑中通常排名最高的冠军,通常被翻译成总冠军。... Yokozuna是Riak Search在Apache Solr之上构建的新实现。 下载尝试Yokozuna。 有关更多信息,请参见。建立状态掌握: 开发:

    riak:Riak是Basho Technologies的去中心化数据存储

    欢迎来到Riak。 概述 Riak是分布式,分散式数据存储系统。 在Wiki中,您将找到设置和使用Riak的“快速入门”指导。 有关更多信息,请浏览以下文件: 自述文件:此文件 许可证:Riak的发布许可证 doc / admin.org...

    server_monitoring_riak:使用Riak作为后端的服务器监视

    使用Riak作为后端的服务器监视 该项目是我的学士学位工作的一部分: “ NoSQL数据库和应用程序的比较分析” 米兰比可卡大学 关联者:安德烈·毛里诺(Andrea Maurino) 联合主持人:Blerina Spahiu 讲解 先决条件 ...

    riak-Erlang.rar

    linux riak erlang,otp_src_20.3

    riak-java-client, Java的Riak客户端.zip

    riak-java-client, Java的Riak客户端 Java客户端客户端 客户端支持与 通信,它是一个开源的分布式数据库,专注于高可用性。水平可伸缩性和可以预测的可以预测的实时延时。 Riak和这段代码都由 Basho维护。Java客户端...

    riak-manage:管理Riak群集的工具

    riak-manage riak管理工具集是一个管理Riak KV集群的项目。 是一个开放源代码的分布式数据库,专注于高可用性,水平可伸缩性和可预测的延迟。 关于此Beta项目的说明: 此软件不应在生产环境中使用。 该软件不能...

    riak-admin:Riak 的类似蒲团的 Web 界面

    riak-admin 到目前为止的功能 显示桶的内容 单击时显示文档内容 编辑文档内容(json.object) 删除单个文档或存储桶的所有文档 用法 git clone git://github.com/frank06/riak-admin cd riak-admin && git ...

    riak_pb:Riak协议缓冲区消息

    Riak协议缓冲区消息 master : develop : 该存储库包含的基于协议缓冲区的接口的消息定义,以及消息类型的各种Erlang特定的实用程序模块。 它与Riak服务器和客户端分开分发,从而使其可用作受支持消息的独立表示...

    riak-formula:安装和管理 Riak

    波纹 安装和管理 Riak 涟漪云存储 riak/cs.sls 将安装 riak-cs、riak-cs-control 和 stanchion 包。

    Riak JSON编辑器「Riak JSON editor」-crx插件

    Riak JSON编辑器 用于Riak的JSON编辑器(NOSQL DB)。 不建议使用,而不要使用此命令:...

    riak_core:Riak使用的分布式系统基础架构

    里亚克核心 Riak Core是分布式系统框架,是分发数据和扩展规模的基础。 更一般而言,可以将其视为构建分布式,可伸缩,容错应用程序的工具包。 对于Riak Core的一些介绍性阅读(这不是纯粹的代码), 有一个古老但...

    riak-php-client:RiakPHP客户端

    适用于PHP的Riak客户端 Riak PHP Client... 运行以下命令: $ composer require " basho/riak " : " 3.0.* " 或者,在require部分中将以下内容手动添加到您的composer.json中: "require" : { "basho/riak" : "3.0.*"}

    riak_pg, 带riak_core的分布式进程组.zip

    riak_pg, 带riak_core的分布式进程组 概述带riak_core的分布式进程组。用法将进程加入组( 不需要预先声明)join(term(), pid()) -&gt; ok | {error, timeout}.如何删除?leave

Global site tag (gtag.js) - Google Analytics