application 查询方法
get_last_item() ->
{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087),
Bucket = <<"rends/ejabberd/pubsub_item">> ,
Inputs = {index, Bucket, <<"idx_int">>, 1},
Query = [{map, {modfun, trend_riak, get_map_bucket_values}, none, false},%%需要借助测方法由<B,K>转换成到value
{reduce, {modfun, trend_riak, get_reduce_bucket_values}, get_last_entry, true}], %%得到最后一条记录
riakc_pb_socket:mapred(Pid, Inputs, Query).
打包在riak中的代码 :返回结果必须是list
64 get_reduce_bucket_values(Records, get_last_entry)->
65 io:format("get_last_entry Records = ~p~n", [Records]),
66 F = fun(#pubsub_item{published=Published, level=Level},
67 #pubsub_item{published=Published2, level=Level2}) ->
68 if Level < Level2 -> true;
69 Level == Level2 ->
70 if Published < Published2 -> true;
71 true -> false
72 end;
73 true -> false
74 end
75 end,
76 case lists:sort(F, Records) of
77 [] -> [];
78 [PublishItem] -> [PublishItem];
79 List when is_list(List)-> [hd(List)]
80 end;
81 get_reduce_bucket_values(Records, {Start, Max})->