Sha256: 846a1e1acba21ad66ac276d83841bd7a554f9572952076f2ae1c11192f3f7e36
Contents?: true
Size: 1 KB
Versions: 1
Compression:
Stored size: 1 KB
Contents
module Lunar class Search attr :sets, :prefix, :search_identifier def initialize(prefix, keywords) if keywords.is_a?(Hash) @sets = keywords.inject([]) { |a, (field, query)| a | Sets.new(prefix, query, field) } @search_identifier = keywords.hash else @sets = Sets.new(prefix, keywords) @search_identifier = keywords.hash end @prefix = prefix # Default finder, uses Ohm style finding @finder = lambda { |id| prefix[id] } end def results(&block) Lunar.redis.zunion dist_key, sets.size, *sets if block_given? ResultSet.new(dist_key, &block) else ResultSet.new(dist_key, &@finder) end # ids = Lunar.redis.zrevrange dist_key, start, finish # if block_given? # ids.map { |e| block.call(e) } # else # ids.map { |e| @@finder.call(prefix, e) } # end end protected def dist_key Lunar.nest[:Results][search_identifier] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lunar-0.1.1 | lib/lunar/search.rb |