[Groonga-commit] droonga/fluent-plugin-droonga at 1e30083 [master] Split search_query

Back to archive index

Yoji Shidara null+****@clear*****
Thu Dec 19 12:14:04 JST 2013


Yoji Shidara	2013-12-19 12:14:04 +0900 (Thu, 19 Dec 2013)

  New Revision: 1e3008316f5fad4c558b80468e5e898782dcc450
  https://github.com/droonga/fluent-plugin-droonga/commit/1e3008316f5fad4c558b80468e5e898782dcc450

  Message:
    Split search_query

  Modified files:
    lib/droonga/searcher.rb

  Modified: lib/droonga/searcher.rb (+56 -44)
===================================================================
--- lib/droonga/searcher.rb    2013-12-18 00:15:52 +0900 (1647462)
+++ lib/droonga/searcher.rb    2013-12-19 12:14:04 +0900 (1ddedcc)
@@ -223,59 +223,71 @@ module Droonga
 
       def search_query(results)
         $log.trace("#{log_tag}: search_query: start")
+
         @start_time = Time.now
-        @result = source = results[@query["source"]]
+        @result = results[@query["source"]]
+
         condition = @query["condition"]
-        if condition
-          expression = Groonga::Expression.new(context: @context)
-          expression.define_variable(:domain => source)
-          parseCondition(source, expression, condition)
-          $log.trace("#{log_tag}: search_query: select: start",
-                     :condition => condition)
-          @result = source.select(expression)
-          $log.trace("#{log_tag}: search_query: select: done")
-          @condition = expression
-        end
+        apply_condition!(condition) if condition
+
         group_by = @query["groupBy"]
-        if group_by
-          $log.trace("#{log_tag}: search_query: group: start",
-                     :by => group_by)
-          if group_by.is_a? String
-            @result =****@resul*****(group_by)
-          elsif group_by.is_a? Hash
-            key = group_by["key"]
-            max_n_sub_records = group_by["maxNSubRecords"]
-            @result =****@resul*****(key, :max_n_sub_records => max_n_sub_records)
-          else
-            raise '"groupBy" parameter must be a Hash or a String'
-          end
-          $log.trace("#{log_tag}: search_query: group: done",
-                     :by => group_by)
-        end
+        apply_group_by!(sort_by) if group_by
+
         @count =****@resul*****
+
         sort_by = @query["sortBy"]
-        if sort_by
-          $log.trace("#{log_tag}: search_query: sort: start",
-                     :by => sort_by)
-          if sort_by.is_a? Array
-            keys = parse_order_keys(sort_by)
-            offset = 0
-            limit = -1
-          elsif sort_by.is_a? Hash
-            keys = parse_order_keys(sort_by["keys"])
-            offset = sort_by["offset"]
-            limit = sort_by["limit"]
-          else
-            raise '"sortBy" parameter must be a Hash or an Array'
-          end
-          @result =****@resul*****(keys, :offset => offset, :limit => limit)
-          $log.trace("#{log_tag}: search_query: sort: done",
-                     :by => sort_by)
-        end
+        apply_sort_by!(sort_by) if sort_by
+
         $log.trace("#{log_tag}: search_query: done")
         @result
       end
 
+      def apply_condition!(condition)
+        expression = Groonga::Expression.new(context: @context)
+        expression.define_variable(:domain => @result)
+        parseCondition(@result, expression, condition)
+        $log.trace("#{log_tag}: search_query: select: start",
+                   :condition => condition)
+        @result =****@resul*****(expression)
+        $log.trace("#{log_tag}: search_query: select: done")
+        @condition = expression
+      end
+
+      def apply_group_by!(group_by)
+        $log.trace("#{log_tag}: search_query: group: start",
+                   :by => group_by)
+        if group_by.is_a? String
+          @result =****@resul*****(group_by)
+        elsif group_by.is_a? Hash
+          key = group_by["key"]
+          max_n_sub_records = group_by["maxNSubRecords"]
+          @result =****@resul*****(key, :max_n_sub_records => max_n_sub_records)
+        else
+          raise '"groupBy" parameter must be a Hash or a String'
+        end
+        $log.trace("#{log_tag}: search_query: group: done",
+                   :by => group_by)
+      end
+
+      def apply_sort_by!(sort_by)
+        $log.trace("#{log_tag}: search_query: sort: start",
+                   :by => sort_by)
+        if sort_by.is_a? Array
+          keys = parse_order_keys(sort_by)
+          offset = 0
+          limit = -1
+        elsif sort_by.is_a? Hash
+          keys = parse_order_keys(sort_by["keys"])
+          offset = sort_by["offset"]
+          limit = sort_by["limit"]
+        else
+          raise '"sortBy" parameter must be a Hash or an Array'
+        end
+        @result =****@resul*****(keys, :offset => offset, :limit => limit)
+        $log.trace("#{log_tag}: search_query: sort: done",
+                   :by => sort_by)
+      end
+
       def need_element_output?(element)
         params = @query["output"]
 
-------------- next part --------------
HTML����������������������������...
Download 



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