2008-05-25 20:49:37 +02:00
|
|
|
require File.dirname(__FILE__) + '/../../couchrest'
|
|
|
|
|
2008-12-14 12:05:02 +01:00
|
|
|
couch = CouchRest.new("http://127.0.0.1:5984")
|
2008-05-25 20:49:37 +02:00
|
|
|
db = couch.database('word-count-example')
|
|
|
|
|
|
|
|
puts "Now that we've parsed all those books into CouchDB, the queries we can run are incredibly flexible."
|
|
|
|
puts "\nThe simplest query we can run is the total word count for all words in all documents:"
|
2008-05-26 07:35:04 +02:00
|
|
|
|
2008-05-25 20:49:37 +02:00
|
|
|
puts db.view('word_count/count').inspect
|
|
|
|
|
2008-05-26 07:35:04 +02:00
|
|
|
puts "\nWe can also narrow the query down to just one word, across all documents. Here is the count for 'flight' in all three books:"
|
|
|
|
|
2008-05-25 20:49:37 +02:00
|
|
|
word = 'flight'
|
|
|
|
params = {
|
|
|
|
:startkey => [word],
|
|
|
|
:endkey => [word,'Z']
|
|
|
|
}
|
|
|
|
|
|
|
|
puts db.view('word_count/count',params).inspect
|
|
|
|
|
|
|
|
puts "\nWe scope the query using startkey and endkey params to take advantage of CouchDB's collation ordering. Here are the params for the last query:"
|
|
|
|
puts params.inspect
|
|
|
|
|
|
|
|
puts "\nWe can also count words on a per-title basis."
|
2008-05-26 07:35:04 +02:00
|
|
|
|
2008-05-25 20:49:37 +02:00
|
|
|
title = 'da-vinci'
|
|
|
|
params = {
|
|
|
|
:key => [word, title]
|
|
|
|
}
|
2008-05-26 07:35:04 +02:00
|
|
|
|
2008-05-25 20:49:37 +02:00
|
|
|
puts db.view('word_count/count',params).inspect
|
2008-05-26 07:35:04 +02:00
|
|
|
|
|
|
|
|
2008-05-25 20:49:37 +02:00
|
|
|
puts "\nHere are the params for 'flight' in the da-vinci book:"
|
|
|
|
puts params.inspect
|
|
|
|
puts
|
|
|
|
puts 'The url looks like this:'
|
2008-12-14 12:05:02 +01:00
|
|
|
puts 'http://127.0.0.1:5984/word-count-example/_view/word_count/count?key=["flight","da-vinci"]'
|
2008-05-25 20:49:37 +02:00
|
|
|
puts "\nTry dropping that in your browser..."
|