class Ddr::Index::QueryClause

Constants

ANY_FIELD
ANY_VALUE
DISJUNCTION
NEGATIVE_QUERY
QUOTE
STANDARD_QUERY
TERM_QUERY

Public Class Methods

absent(field) click to toggle source

Builds a query clause to filter where field is NOT present (no values)

# File lib/ddr/index/query_clause.rb, line 68
def absent(field)
  new(field: field, value: ANY_VALUE, template: NEGATIVE_QUERY)
end
before(field, value) click to toggle source

Builds a query clause to filter where date field value is earlier than a date/time value.

# File lib/ddr/index/query_clause.rb, line 79
def before(field, value)
  new(field: field, value: "[* TO %s]" % Ddr::Utils.solr_date(value))
end
Also aliased as: before_date_time
before_date_time(field, value)
Alias for: before
before_days(field, value) click to toggle source

Builds a query clause to filter where date field value is earlier than a number of days before now.

# File lib/ddr/index/query_clause.rb, line 85
def before_days(field, value)
  new(field: field, value: "[* TO NOW-%iDAYS]" % value)
end
disjunction(field, values) click to toggle source

Builds a query clause to filter where field contains at least one of a set of values.

# File lib/ddr/index/query_clause.rb, line 73
def disjunction(field, values)
  value = values.map { |v| quote(v) }.join(" ")
  new(field: field, value: value, template: DISJUNCTION)
end
id(value)
Alias for: unique_key
negative(field, value) click to toggle source

Builds a query clause to filter where field does not have the given value.

# File lib/ddr/index/query_clause.rb, line 58
def negative(field, value)
  new(field: field, value: value, template: NEGATIVE_QUERY, quote_value: true)
end
present(field) click to toggle source

Builds a query clause to filter where field is present (i.e, has any value)

# File lib/ddr/index/query_clause.rb, line 63
def present(field)
  new(field: field, value: ANY_VALUE)
end
quote(value) click to toggle source
# File lib/ddr/index/query_clause.rb, line 33
def quote(value)
  # Derived from Blacklight::Solr::SearchBuilderBehavior#solr_param_quote
  unless value =~ /\A[a-zA-Z0-9$_\-\^]+\z/
    QUOTE + value.gsub("'", "\\\\\'").gsub('"', "\\\\\"") + QUOTE
  else
    value
  end
end
term(field, value) click to toggle source

Builds a “term query” clause to filter where field contains value.

# File lib/ddr/index/query_clause.rb, line 90
def term(field, value)
  new(field: field, value: value, template: TERM_QUERY)
end
unique_key(value) click to toggle source

Builds a query clause to retrieve the index document by unique key.

# File lib/ddr/index/query_clause.rb, line 43
def unique_key(value)
  term(UniqueKeyField.instance, value)
end
Also aliased as: id
where(field, value) click to toggle source
# File lib/ddr/index/query_clause.rb, line 48
def where(field, value)
   values = Array(value)
  if values.size > 1
    disjunction(field, values)
  else
    new(field: field, value: values.first, quote_value: true)
  end
end

Public Instance Methods

quote(value) click to toggle source
# File lib/ddr/index/query_clause.rb, line 27
def quote(value)
  self.class.quote(value)
end
to_s() click to toggle source
# File lib/ddr/index/query_clause.rb, line 23
def to_s
  template % { field: field, value: quote_value ? quote(value) : value }
end