Sha256: a9fd929149f7dfd1b87880ac79b9b02c50882704cc0a54e03995cc92fb7094f0
Contents?: true
Size: 1.5 KB
Versions: 28
Compression:
Stored size: 1.5 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 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
28 entries across 28 versions & 7 rubygems