[Groonga-commit] groonga/fluent-plugin-kotoumi [master] Implement count

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Jan 31 14:23:00 JST 2013


Kouhei Sutou	2013-01-31 14:23:00 +0900 (Thu, 31 Jan 2013)

  New Revision: 8ee0ff9d47273ee86a998068d4c7bd337c8bdb8d
  https://github.com/groonga/fluent-plugin-kotoumi/commit/8ee0ff9d47273ee86a998068d4c7bd337c8bdb8d

  Log:
    Implement count

  Modified files:
    lib/kotoumi/worker.rb
    test/test_worker.rb

  Modified: lib/kotoumi/worker.rb (+24 -17)
===================================================================
--- lib/kotoumi/worker.rb    2013-01-31 14:07:48 +0900 (d071cbe)
+++ lib/kotoumi/worker.rb    2013-01-31 14:23:00 +0900 (6c67f0d)
@@ -20,30 +20,37 @@ require 'groonga'
 module Kotoumi
   class Worker
     def initialize(database, queue_name)
-      @database = Groonga::Database.open(database)
-      @ctx = Groonga::Context.default
+      @context = Groonga::Context.new
+      @database =****@conte*****_database(database)
       @queue_name = queue_name
     end
 
     def shutdown
       @database.close
-      @ctx.close
-      @database = @ctx = nil
-      Groonga::Context.default = nil
+      @context.close
+      @database = @context = nil
     end
 
-    def process_message(record)
-      return {
-        "main-search-result" => {
-          startTime: "2001-08-02T10:45:23.5+09:00",
-          elapsedTime: 123.456,
-          count: 123,
-          attributes: [
-            { name: "name", type: "ShortText", vector: false },
-            { name: "age", type: "UInt32", vector: false }
-          ],
-          records: [ ["a", 10], ["b", 20] ]
-        }
+    def process_message(envelope)
+      case envelope["type"]
+      when "search"
+        search(envelope["body"])
+      end
+    end
+
+    private
+    def search(request)
+      result = {}
+      request["queries"].each do |name, query|
+        result[name] = search_query(query)
+      end
+      result
+    end
+
+    def search_query(query)
+      source = @context[query["source"]]
+      {
+        "count" => source.size,
       }
     end
   end

  Modified: test/test_worker.rb (+13 -18)
===================================================================
--- test/test_worker.rb    2013-01-31 14:07:48 +0900 (c3d6335)
+++ test/test_worker.rb    2013-01-31 14:23:00 +0900 (a843f5a)
@@ -44,28 +44,23 @@ class WorkerTest < Test::Unit::TestCase
   private
   class SearchTest < self
     def test_minimum
-      expected = {
-        "main-search-result" => {
-          :attributes => [
-            {
-              :name   => "name",
-              :type   => "ShortText",
-              :vector => false
-            },
-            {
-              :name   => "age",
-              :type   => "UInt32",
-              :vector => false
+      request = {
+        "type" => "search",
+        "body" => {
+          "queries" => {
+            "sections" => {
+              "source" => "Sections",
             },
-          ],
-          :count => 123,
-          :elapsedTime => 123.456,
-          :records => [["a", 10], ["b", 20]],
-          :startTime => "2001-08-02T10:45:23.5+09:00",
+          }
+        },
+      }
+      expected = {
+        "sections" => {
+          "count" => 9,
         }
       }
       assert_equal(expected,
-                   @worker.process_message({}))
+                   @worker.process_message(request))
     end
   end
 end
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index