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