Commit b3a75b49 authored by Michel Pelletier's avatar Michel Pelletier

Added __len__ to unindexes

parent 207f2d72
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
############################################################################## ##############################################################################
"""Simple column indices""" """Simple column indices"""
__version__='$Revision: 1.2 $'[11:-2] __version__='$Revision: 1.3 $'[11:-2]
from Globals import Persistent from Globals import Persistent
import BTree import BTree
...@@ -147,6 +147,9 @@ class UnIndex(Persistent): ...@@ -147,6 +147,9 @@ class UnIndex(Persistent):
pass pass
def __len__(self):
return len(self._unindex)
def index_object(self, i, obj): def index_object(self, i, obj):
""" index and object 'obj' with integer id 'i'""" """ index and object 'obj' with integer id 'i'"""
index = self._index index = self._index
...@@ -156,9 +159,7 @@ class UnIndex(Persistent): ...@@ -156,9 +159,7 @@ class UnIndex(Persistent):
k=getattr(obj, id) k=getattr(obj, id)
if callable(k): if callable(k):
k = str(k()) k = k()
else:
k = str(k)
if k is None or k == MV: if k is None or k == MV:
return return
...@@ -170,6 +171,9 @@ class UnIndex(Persistent): ...@@ -170,6 +171,9 @@ class UnIndex(Persistent):
set.insert(i) set.insert(i)
unindex[i] = k unindex[i] = k
self._index = index
self._unindex = unindex
def unindex_object(self, i): def unindex_object(self, i):
""" Unindex the object with integer id 'i' """ """ Unindex the object with integer id 'i' """
...@@ -182,6 +186,9 @@ class UnIndex(Persistent): ...@@ -182,6 +186,9 @@ class UnIndex(Persistent):
set = index.get(k) set = index.get(k)
if set is not None: set.remove(i) if set is not None: set.remove(i)
self._index = index
self._unindex = unindex
def _apply_index(self, request, cid=''): def _apply_index(self, request, cid=''):
"""Apply the index to query parameters given in the argument, """Apply the index to query parameters given in the argument,
......
...@@ -202,7 +202,7 @@ Notes on a new text index design ...@@ -202,7 +202,7 @@ Notes on a new text index design
space. space.
""" """
__version__='$Revision: 1.1 $'[11:-2] __version__='$Revision: 1.2 $'[11:-2]
from Globals import Persistent from Globals import Persistent
import BTree, IIBTree, IOBTree import BTree, IIBTree, IOBTree
...@@ -245,8 +245,13 @@ class UnTextIndex(Persistent): ...@@ -245,8 +245,13 @@ class UnTextIndex(Persistent):
else: else:
pass pass
def __len__(self):
return len(self._unindex)
def clear(self): def clear(self):
self._index = BTree() self._index = BTree()
self._unindex = IOBTree()
def positions(self, docid, words): def positions(self, docid, words):
...@@ -280,7 +285,6 @@ class UnTextIndex(Persistent): ...@@ -280,7 +285,6 @@ class UnTextIndex(Persistent):
"""Recompute index data for data with ids >= start. """Recompute index data for data with ids >= start.
if 'obj' is passed in, it is indexed instead of _data[i]""" if 'obj' is passed in, it is indexed instead of _data[i]"""
id = self.id id = self.id
k = getattr(obj, id) k = getattr(obj, id)
...@@ -307,6 +311,8 @@ class UnTextIndex(Persistent): ...@@ -307,6 +311,8 @@ class UnTextIndex(Persistent):
index = self._index index = self._index
get = index.get get = index.get
self._unindex[i] = tuple(d.keys())
for word,score in d.items(): for word,score in d.items():
r = get(word) r = get(word)
if r is not None: if r is not None:
...@@ -325,6 +331,8 @@ class UnTextIndex(Persistent): ...@@ -325,6 +331,8 @@ class UnTextIndex(Persistent):
else: r[i] = score else: r[i] = score
else: index[word] = i, score else: index[word] = i, score
self._index = index
def unindex_object(self, i, tt=type(()) ): def unindex_object(self, i, tt=type(()) ):
...@@ -337,7 +345,7 @@ class UnTextIndex(Persistent): ...@@ -337,7 +345,7 @@ class UnTextIndex(Persistent):
else: else:
del index[n][i] del index[n][i]
self._index = index
def _subindex(self, isrc, d, old, last): def _subindex(self, isrc, d, old, last):
...@@ -392,10 +400,6 @@ class UnTextIndex(Persistent): ...@@ -392,10 +400,6 @@ class UnTextIndex(Persistent):
id = self.id id = self.id
## cidid = "%s/%s" % (cid, id)
## has_key = request.has_key
## if has_key(cidid): keys = request[cidid]
## elif has_key(id): keys =request[id]
if request.has_key(id): if request.has_key(id):
keys = request[id] keys = request[id]
else: return None else: return None
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment