Class: Spinel::Backend
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods inherited from Base
#base, #base_and, #cachebase, #cachekey, #database, #initialize
Methods included from Helper
#document_aliases, #document_body, #document_id, #document_score, #document_to_phrase, #document_validate, #prefixes_for_phrase
Constructor Details
This class inherits a constructor from Spinel::Base
Instance Method Details
#add(doc, opts = {}) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/spinel/backend.rb', line 4 def add(doc, opts = {}) opts = { skip_duplicate_check: false }.merge(opts) document_validate doc id = document_id doc remove(id: id) unless opts[:skip_duplicate_check] Spinel.redis.pipelined do Spinel.redis.hset(database, id, MultiJson.encode(doc)) prefixes_for_phrase(document_to_phrase(doc)).each do |p| Spinel.redis.zadd(base_and(p), document_score(doc), id) end end end |
#get(id) ⇒ Object
19 20 21 22 23 |
# File 'lib/spinel/backend.rb', line 19 def get id if doc = Spinel.redis.hget(database, id) MultiJson.decode(doc) end end |
#remove(doc) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/spinel/backend.rb', line 25 def remove(doc) if prev_doc = Spinel.redis.hget(database, document_id(doc)) prev_doc = MultiJson.decode(prev_doc) prev_id = document_id prev_doc Spinel.redis.pipelined do Spinel.redis.hdel(database, prev_id) prefixes_for_phrase(document_to_phrase(prev_doc)).each do |p| Spinel.redis.zrem(base_and(p), prev_id) end end end end |