Class: MultiSolr::SolrFilterSimple
- Inherits:
-
Object
- Object
- MultiSolr::SolrFilterSimple
- 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
Direct Known Subclasses
SolrFilterBoolean, SolrFilterCollection, SolrFilterDate, SolrFilterFreeQuery, SolrFilterRange
Instance Attribute Summary collapse
-
#field_name ⇒ Object
readonly
Returns the value of attribute field_name.
-
#name ⇒ Object
readonly
Name des Filters als Symbol.
-
#options ⇒ Object
readonly
Options des Filters.
Instance Method Summary collapse
-
#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.
-
#initialize(name, options = {}) ⇒ SolrFilterSimple
constructor
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 } :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.
- #label ⇒ Object
-
#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).
- #sanitize_value(value) ⇒ Object
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, ={} @name = name @field_name = [:field_name] || @name @value_render_proc = .delete(:render_value) || Proc.new{|value| value.to_s } @solr_query_proc = .delete(:solr_query) @options = || {} end |
Instance Attribute Details
#field_name ⇒ Object (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 |
#name ⇒ Object (readonly)
Name des Filters als Symbol
6 7 8 |
# File 'lib/multi_solr/solr_filter_simple.rb', line 6 def name @name end |
#options ⇒ Object (readonly)
Options des Filters
7 8 9 |
# File 'lib/multi_solr/solr_filter_simple.rb', line 7 def @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 |
#label ⇒ Object
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, =nil return '' if value.nil? @value_render_proc.call(value, ) 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 |