Sha256: 73b199703f3661dac0ad27c5ce5b27a73567dc73d117df685a791061b3b4acfa
Contents?: true
Size: 1.81 KB
Versions: 2
Compression:
Stored size: 1.81 KB
Contents
module Sunspot module Query # # A query component that builds parameters for requesting highlights # class Highlighting #:nodoc: def initialize(fields=[], options={}) @fields = fields @options = options end # # Return Solr highlighting params # def to_params params = { :hl => 'on', :"hl.simple.pre" => '@@@hl@@@', :"hl.simple.post" => '@@@endhl@@@' } unless @fields.empty? params[:"hl.fl"] = @fields.map { |field| field.indexed_name } end if max_snippets = @options[:max_snippets] params.merge!(make_params('snippets', max_snippets)) end if fragment_size = @options[:fragment_size] params.merge!(make_params('fragsize', fragment_size)) end if @options[:merge_contiguous_fragments] params.merge!(make_params('mergeContiguous', 'true')) end if @options[:phrase_highlighter] params.merge!(make_params('usePhraseHighlighter', 'true')) if @options[:require_field_match] params.merge!(make_params('requireFieldMatch', 'true')) end end advanced_fields = { :alternate_field => 'alternateField', :formatter => 'formatter', :fragmenter => 'fragmenter' } advanced_fields.each do |k,v| if val = @options[k] params.merge!(make_params(v, val)) end end params end private def make_params(name, value) if @fields.empty? { :"hl.#{name}" => value } else @fields.inject({}) do |hash, field| hash.merge!(:"f.#{field.indexed_name}.hl.#{name}" => value) end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
lisausa-sunspot-1.2.1.1 | lib/sunspot/query/highlighting.rb |
lisausa-sunspot-1.2.1 | lib/sunspot/query/highlighting.rb |