Skip to content

Commit

Permalink
added drop-in replacement for InvertedList index (all_slots_view & St…
Browse files Browse the repository at this point in the history
…ore#search)
  • Loading branch information
Oleg Andreev committed May 24, 2008
1 parent 0d0bb33 commit 3a6a7e1
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 15 deletions.
12 changes: 9 additions & 3 deletions lib/strokedb/store.rb
Expand Up @@ -14,15 +14,21 @@ def initialize(options = {})
initialize_files
autosync! unless @options['noautosync']
raise "Missing chunk storage" unless @storage
@all_slots_view = GenerateAllSlotsView()
end

def find(uuid, version=nil, opts = {}, &block)
@storage.find(uuid,version,opts.merge(:store => self),&block)
end

def search(*args)
return [] unless @index_store
@index_store.find(*args)
# Perform a simple search
# search(:a => xxx, :b => yyy, ...)
def search(slots)
slots.map do |key, value|
@all_slots_view.find([key, value]).to_set
end.inject do |set, subset|
set & subset
end
end

def include?(uuid,version=nil)
Expand Down
2 changes: 1 addition & 1 deletion lib/strokedb/views.rb
Expand Up @@ -5,4 +5,4 @@
require 'views/memory_view_storage'
require 'views/file_view_storage'
require 'views/view'
require 'views/docs_by_meta'
require 'views/all_slots_view'
20 changes: 20 additions & 0 deletions lib/strokedb/views/all_slots_view.rb
@@ -0,0 +1,20 @@
module StrokeDB
def GenerateAllSlotsView
View.named "strokedb_all_slots" do |view|
def view.map(uuid, doc)
doc.slotnames.inject([]) do |pairs, sname|
value = doc[sname]
if value.is_a?(Array)
value.inject(pairs) do |ps, v|
ps << [[sname, v], doc]
ps
end
else
ps << [[sname, value], doc]
ps
end
end
end
end
end
end
11 changes: 0 additions & 11 deletions lib/strokedb/views/docs_by_meta.rb

This file was deleted.

0 comments on commit 3a6a7e1

Please sign in to comment.