Hi,

I'm using Ruby and I'm trying to learn how to use Riak basics, now I'm
learning links and I have a question I know will be so easy to answer by
you, experts :).

I know how to search with a simple MapReduce query what items I'm linking,
but now the opposite, what items links me.

As little concept I've made this simple script, just it creates 10 items in
a bucket, 20 relations as follow, 20 as like (I don't try to do the next
graph thing, just was the first tags that come to my brain):   (BTW: I have
tryed to find how this is done in ripple but seems I need to study more to
obtain the answer looking the code Sean wrote).

As you can see, I just create those 10 items in the bucket (1..10) and
randomly add the relations. The mapreduce function works showing me all the
links in each relation for each object in the last iteration.

Now, I'm trying to find how to get the reverse.

Thank you in advance. Hope someone can get some time and help me.

-- test-creator.rb --
require 'rubygems'
require 'riak'

client = Riak::Client.new
client.http_port = 8091

bucket_name = "users8" #change for test in different bucket

bucket = client.bucket(bucket_name)

10.times do |n|
  o = bucket.new("#{n + 1}")
  o.data = "#{n + 1}"
  o.store
end

20.times do |n|
  source = rand(10) + 1
  destination = rand(10) + 1
  puts "#{source} --> follow --> #{destination}"
  o = bucket["#{source}"]
  o.links << Riak::Link.new(bucket_name, destination, 'follow')
  o.store
end

20.times do |n|
  source = rand(10) + 1
  destination = rand(10) + 1
  puts "#{source} --> like --> #{destination}"
  o = bucket["#{source}"]
  o.links << Riak::Link.new(bucket_name, destination, 'like')
  o.store
end

10.times do |n|
  results = Riak::MapReduce.new(client).add(bucket_name, "#{n +
1}").link(:bucket => bucket_name, :tag => 'follow').map("function(v) {
return [JSON.parse(v.values[0].data)]; }", :keep => true).run
  puts "follow #{n + 1} = "
  p results
  results = Riak::MapReduce.new(client).add(bucket_name, "#{n +
1}").link(:bucket => bucket_name, :tag => 'like').map("function(v) { return
[JSON.parse(v.values[0].data)]; }", :keep => true).run
  puts "like #{n + 1} = "
  p results
end
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to