Class: MultiSolr::SolrFilterSimple

Inherits:
Object
  • Object
show all
Defined in:
lib/multi_solr/solr_filter_simple.rb

Overview

Einfacher Solr-Filter mit einem String als Value Ist auch Basisklasse für alle erweiterten Filter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}) ⇒ SolrFilterSimple

Constructor des Filters Params:

filter_name: Name des Filters als Symbol
options:     optionale Hash mit den folgenden Optionen  (sind alle optional):
  :render_value   Proc welcher den Filter-Value in einem String zur Darstellung generiert
                  Ist dieser nicht angegeben so wird 'value.to_s' benutzt
                  Beispiel: :render_value => lambda{|value| ItemSize::HANDLINGS[value.to_i] }
  :field_name     Name des zu nutzenden Solr-Fields, default ist filter_name
  :solr_query     Proc welcher den SolR-Query-String mit den Filter-Value bildet.
                  Wenn nicht angegeben wird <field_name>:<value> benutzt
                  Beispiel: :solr_query => lambda{|value|  "teileanzahl:[#{value} TO *]" }


21
22
23
24
25
26
27
# File 'lib/multi_solr/solr_filter_simple.rb', line 21

def initialize name, options={}
  @name = name
  @field_name = options[:field_name] || @name
  @value_render_proc = options.delete(:render_value) || Proc.new{|value| value.to_s }
  @solr_query_proc = options.delete(:solr_query)
  @options = options || {}
end

Instance Attribute Details

#nameObject (readonly)

Name des Filters als Symbol



6
7
8
# File 'lib/multi_solr/solr_filter_simple.rb', line 6

def name
  @name
end

#optionsObject (readonly)

Options des Filters



7
8
9
# File 'lib/multi_solr/solr_filter_simple.rb', line 7

def options
  @options
end

Instance Method Details

#build_solr_query(value) ⇒ Object

Bilden des SolR-Query-Strings entweder per bei der Erzeugung angegebenen solr-query-Proc oder aus Filter-Namen und dem spezifizierten ‘value’ Besteht der ‘value’ aus mehren Worten, so wird er automatisch in Hochkomma eingeschlossen ( ‘test sample’ => ‘“test sample”’) Params:

value: der konkrete Wert f

returns: String in SOLR-Query-Syntax



38
39
40
41
42
43
44
45
46
47
# File 'lib/multi_solr/solr_filter_simple.rb', line 38

def build_solr_query value
  return nil if value.blank?
  # wenn Leerzeichen vorkommen dann String in "" einschliessen
  value = sanitize_value value
  if @solr_query_proc
    @solr_query_proc.call(value)
  else
    "#{@field_name}:#{value}"
  end
end

#labelObject



65
66
67
# File 'lib/multi_solr/solr_filter_simple.rb', line 65

def label
  I18n.t("solr_search.#{@name}", :default => [@name, @name.to_s])
end

#render_value(value, options = nil) ⇒ Object

Konvertieren der Wertes in den Darstellungs-String Nutzt wenn bei den Init-Options angegeben den hinterlegten Proc (value_render). Ansonsten wird nur ‘value.to_s’ aufgerufen. Params:

value:    der konkrete Wert f

returns: String



57
58
59
60
# File 'lib/multi_solr/solr_filter_simple.rb', line 57

def render_value value, options=nil
  return '' if value.nil?
  @value_render_proc.call(value, options)
end

#sanitize_value(value) ⇒ Object



69
70
71
72
73
74
75
# File 'lib/multi_solr/solr_filter_simple.rb', line 69

def sanitize_value value
  if value =~ /\s+/
    "\"#{value}\""
  else
    value
  end
end