[Groonga-commit] groonga/groonga-command at c48fc05 [master] select: support newly added parameters

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Oct 11 16:56:05 JST 2016


Kouhei Sutou	2016-10-11 16:56:05 +0900 (Tue, 11 Oct 2016)

  New Revision: c48fc059a67ecc509fdd4c5b34b77b7ecb07099f
  https://github.com/groonga/groonga-command/commit/c48fc059a67ecc509fdd4c5b34b77b7ecb07099f

  Message:
    select: support newly added parameters
    
    Supported parameters:
    
      * adjuster
      * drilldown_calc_types
      * drilldown_calc_target
      * sort_keys
      * drilldown_sort_keys
    
    The following methods are added for keep backward compatibility:
    
      * Groonga::Command::Select#sort_keys
      * Groonga::Command::Select#drilldown_sort_keys

  Modified files:
    lib/groonga/command/select.rb
    test/command/test-select.rb

  Modified: lib/groonga/command/select.rb (+27 -0)
===================================================================
--- lib/groonga/command/select.rb    2016-10-11 16:38:52 +0900 (a8f8861)
+++ lib/groonga/command/select.rb    2016-10-11 16:56:05 +0900 (f7d5476)
@@ -45,16 +45,32 @@ module Groonga
             :query_expansion,
             :query_flags,
             :query_expander,
+            :adjuster,
+            :drilldown_calc_types,
+            :drilldown_calc_target,
+            :sort_keys,
+            :drilldown_sort_keys,
           ]
         end
       end
 
       Command.register(command_name, self)
 
+      # @return [String] The sort keys as String. Each key is
+      #   separated by "," or spaces.
+      #
+      # @deprecated since 1.2.8. Use {#sort_keys} instead.
       def sortby
         self[:sortby]
       end
 
+      # @return [::Array<String>] The sort keys.
+      #
+      # @since 1.2.8
+      def sort_keys
+        parse_array_value(self[:sort_keys] || self[:sortby] || "")
+      end
+
       def scorer
         self[:scorer]
       end
@@ -75,6 +91,17 @@ module Groonga
         @drilldowns ||= array_value(:drilldown)
       end
 
+      # @return [::Array<String>] The sort keys for drilldowns.
+      #
+      # @since 1.2.8
+      def drilldown_sort_keys
+        value = self[:drilldown_sort_keys] || self[:drilldown_sortby] || ""
+        parse_array_value(value)
+      end
+
+      # @return [::Hash<String, Drilldown>] The labeled drilldowns.
+      #
+      # @since 1.2.8
       def labeled_drilldowns
         @labeled_drilldowns ||= parse_labeled_drilldowns
       end

  Modified: test/command/test-select.rb (+43 -0)
===================================================================
--- test/command/test-select.rb    2016-10-11 16:38:52 +0900 (9598009)
+++ test/command/test-select.rb    2016-10-11 16:56:05 +0900 (a2b7e86)
@@ -41,6 +41,11 @@ class SelectCommandTest < Test::Unit::TestCase
       query_expansion            = "deprecated"
       query_flags                = "ALLOW_LEADING_NOT"
       query_expander             = "Terms.synonym"
+      adjuster                   = "tag * 10"
+      drilldown_calc_types       = "MIN, MAX"
+      drilldown_calc_target      = "age"
+      sort_keys                  = "-_score"
+      drilldown_sort_keys        = "-_nsubrecs"
 
       ordered_arguments = [
         table,
@@ -62,6 +67,11 @@ class SelectCommandTest < Test::Unit::TestCase
         query_expansion,
         query_flags,
         query_expander,
+        adjuster,
+        drilldown_calc_types,
+        drilldown_calc_target,
+        sort_keys,
+        drilldown_sort_keys,
       ]
       command = select_command({}, ordered_arguments)
 
@@ -85,6 +95,11 @@ class SelectCommandTest < Test::Unit::TestCase
                      :query_expansion            => query_expansion,
                      :query_flags                => query_flags,
                      :query_expander             => query_expander,
+                     :adjuster                   => adjuster,
+                     :drilldown_calc_types       => drilldown_calc_types,
+                     :drilldown_calc_target      => drilldown_calc_target,
+                     :sort_keys                  => sort_keys,
+                     :drilldown_sort_keys        => drilldown_sort_keys,
                    },
                    command.arguments)
     end
@@ -125,6 +140,34 @@ class SelectCommandTest < Test::Unit::TestCase
     end
   end
 
+  class SortKeysTest < self
+    def test_reader
+      command = select_command(:sort_keys => "-_score,_key")
+      assert_equal(["-_score", "_key"],
+                   command.sort_keys)
+    end
+
+    def test_sortby
+      command = select_command(:sortby => "-_score,_key")
+      assert_equal(["-_score", "_key"],
+                   command.sort_keys)
+    end
+  end
+
+  class DrilldownSortKeysTest < self
+    def test_reader
+      command = select_command(:drilldown_sort_keys => "-_nsubrecs,_key")
+      assert_equal(["-_nsubrecs", "_key"],
+                   command.drilldown_sort_keys)
+    end
+
+    def test_sortby
+      command = select_command(:drilldown_sortby => "-_nsubrecs,_key")
+      assert_equal(["-_nsubrecs", "_key"],
+                   command.drilldown_sort_keys)
+    end
+  end
+
   class LabeledDrilldownsTest < self
     def test_multiple
       parameters = {
-------------- next part --------------
HTML����������������������������...
Download 



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