[Zope-Checkins] CVS: Zope/lib/python/Products/ZCTextIndex - ZCTextIndex.py:1.44
Andreas Jung
andreas@andreas-jung.com
Sun, 2 Feb 2003 13:37:28 -0500
Update of /cvs-repository/Zope/lib/python/Products/ZCTextIndex
In directory cvs.zope.org:/tmp/cvs-serv22431
Modified Files:
ZCTextIndex.py
Log Message:
reverting changes to revision 1.42. Unittests passed in wrong
environment but not on a fresh checkout.
=== Zope/lib/python/Products/ZCTextIndex/ZCTextIndex.py 1.43 => 1.44 ===
--- Zope/lib/python/Products/ZCTextIndex/ZCTextIndex.py:1.43 Sun Feb 2 05:59:08 2003
+++ Zope/lib/python/Products/ZCTextIndex/ZCTextIndex.py Sun Feb 2 13:37:25 2003
@@ -67,9 +67,9 @@
field_name=None, lexicon_id=None):
self.id = id
- # indexed attributes
- self._indexed_attrs = getattr(extra, 'doc_attr', '').split(',') or [field_name] or [id]
- self._indexed_attrs = [ attr.strip() for attr in self._indexed_attrs if attr ]
+ # Arguments can be passed directly to the constructor or
+ # via the silly "extra" record.
+ self._fieldname = field_name or getattr(extra, 'doc_attr', '') or id
lexicon_id = lexicon_id or extra.lexicon_id
lexicon = getattr(caller, lexicon_id, None)
@@ -96,9 +96,6 @@
self.index = self._index_factory(aq_base(self.getLexicon()))
-
-
-
## Private Methods ##
security.declarePrivate('getLexicon')
@@ -151,22 +148,9 @@
## Pluggable Index APIs ##
- def index_object(self, documentId, obj, threshold=None):
- """ wrapper to handle indexing of multiple attributes """
-
- # needed for backward compatibility
- try: fields = self._indexed_attrs
- except: fields = [ self._fieldname ]
-
- res = 0
- for attr in fields:
- res += self._index_object(documentId, obj, threshold, attr)
-
- return res > 0
-
- def _index_object(self, docid, obj, threshold=None, attr=""):
+ def index_object(self, docid, obj, threshold=None):
# XXX We currently ignore subtransaction threshold
- text = getattr(obj, attr, None)
+ text = getattr(obj, self._fieldname, None)
if text is None:
return 0
if callable(text):
@@ -197,7 +181,7 @@
return None
tree = QueryParser(self.getLexicon()).parseQuery(query_str)
results = tree.executeQuery(self.index)
- return results, (self.id,)
+ return results, (self._fieldname,)
def getEntryForObject(self, documentId, default=None):
"""Return the list of words indexed for documentId"""
@@ -233,15 +217,15 @@
def getIndexSourceNames(self):
"""Return sequence of names of indexed attributes"""
- try:
- return self._indexed_attrs
- except:
- return [self._fieldname]
+ return [self._fieldname]
def getIndexType(self):
"""Return index type string"""
return getattr(self, '_index_type', self._index_factory.__name__)
+ def getFieldName(self):
+ """Return indexed attribute name"""
+ return self._fieldname
def getLexiconURL(self):
"""Return the url of the lexicon used by the index"""