Commit b3a75b49 authored by Michel Pelletier's avatar Michel Pelletier

Added __len__ to unindexes

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