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 *]" }


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

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

#field_nameObject (readonly)

Returns the value of attribute field_name.



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

def field_name
  @field_name
end

#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ür diesen Filter

returns: String in SOLR-Query-Syntax



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

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



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

def label
  name = I18n.t("solr_search.#{@name}", :default => [@name, @name.to_s])
  prefix = @options[:label_prefix]
  if prefix
    prefix_l = I18n.t("solr_search.#{prefix}", :default => [prefix, prefix.to_s])
    "#{prefix_l}-#{name}"
  else
    name
  end
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ür diesen Filter
options:  optionale Parameter, werden an die hinterlegten Proc (value_render) weitergereicht

returns: String



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

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

#sanitize_value(value) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/multi_solr/solr_filter_simple.rb', line 77

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