public
Description: StrokeDB is an embeddable distributed document database written in Ruby
Homepage: http://strokedb.com/
Clone URL: git://github.com/yrashk/strokedb.git
added drop-in replacement for InvertedList index (all_slots_view & Store#search)
oleganza (author)
Fri May 23 18:21:51 -0700 2008
commit  3a6a7e15520ee7b77fdb134f11802a4cd152edb0
tree    0d3c2490b3f87eecaa2e83aaa1c80489bdd4a6ed
parent  0d0bb33923b34d800a7f45e86a32812173df14da
...
14
15
16
 
17
18
19
20
21
22
23
24
25
 
 
 
 
 
 
 
 
26
27
28
...
14
15
16
17
18
19
20
21
22
23
 
 
 
24
25
26
27
28
29
30
31
32
33
34
0
@@ -14,15 +14,21 @@ module StrokeDB
0
       initialize_files
0
       autosync! unless @options['noautosync']
0
       raise "Missing chunk storage" unless @storage
0
+      @all_slots_view = GenerateAllSlotsView()
0
     end
0
 
0
     def find(uuid, version=nil, opts = {}, &block)
0
       @storage.find(uuid,version,opts.merge(:store => self),&block)
0
     end
0
 
0
-    def search(*args)
0
-      return [] unless @index_store
0
-      @index_store.find(*args)
0
+    # Perform a simple search
0
+    # search(:a => xxx, :b => yyy, ...)
0
+    def search(slots)
0
+      slots.map do |key, value|
0
+        @all_slots_view.find([key, value]).to_set 
0
+      end.inject do |set, subset|
0
+        set & subset
0
+      end
0
     end
0
 
0
     def include?(uuid,version=nil)
...
5
6
7
8
 
...
5
6
7
 
8
0
@@ -5,4 +5,4 @@ require 'views/view_storage'
0
 require 'views/memory_view_storage'
0
 require 'views/file_view_storage'
0
 require 'views/view'
0
-require 'views/docs_by_meta'
0
+require 'views/all_slots_view'

Comments