class Qiita::Elasticsearch::Nodes::FilterNode

Public Class Methods

new(tokens) click to toggle source

@param [Array<Qiita::Elasticsearch::Tokens>] tokens

# File lib/qiita/elasticsearch/nodes/filter_node.rb, line 9
def initialize(tokens)
  @tokens = tokens
end

Public Instance Methods

to_hash() click to toggle source
# File lib/qiita/elasticsearch/nodes/filter_node.rb, line 13
def to_hash
  if must_not_tokens.empty? && must_tokens.length == 1
    TermNode.new(must_tokens.first).to_hash
  else
    {
      "bool" => {
        "_cache" => true,
        "must" => must_queries,
        "must_not" => must_not_queries,
      }.reject do |key, value|
        value.is_a?(Array) && value.empty?
      end,
    }
  end
end

Private Instance Methods

must_not_queries() click to toggle source
# File lib/qiita/elasticsearch/nodes/filter_node.rb, line 31
def must_not_queries
  must_not_tokens.map do |token|
    if token.field_name.nil?
      {
        "query" => token.to_hash,
      }
    else
      TermNode.new(token).to_hash
    end
  end
end
must_not_tokens() click to toggle source
# File lib/qiita/elasticsearch/nodes/filter_node.rb, line 43
def must_not_tokens
  @must_not_tokens ||= @tokens.select(&:must_not?)
end
must_queries() click to toggle source
# File lib/qiita/elasticsearch/nodes/filter_node.rb, line 47
def must_queries
  must_tokens.map do |token|
    TermNode.new(token).to_hash
  end
end
must_tokens() click to toggle source
# File lib/qiita/elasticsearch/nodes/filter_node.rb, line 53
def must_tokens
  @must_tokens ||= @tokens.select(&:must?)
end