def test_ExpressionEvaluator(self): ki= self.ki; obj2= self.obj2 ee= ExpressionEvaluator(); ee.id= 'ee' ki._setObject(ee.id,ee); ee= ki._getOb(ee.id) ee.manage_changeProperties(Expression= 'python: (3,4,)') self.assertEqual(ki._evaluate(obj2).keys(),OOSet((1,2,3,4)).keys()) # ignore ee.manage_changeProperties(IgnorePredicate= 'python: 3 in value') self.assertEqual(ki._evaluate(obj2).keys(),OOSet((1,2,)).keys()) # ignore - call it ee.manage_changeProperties(IgnorePredicate= 'python: lambda v: 3 in v') # normalize ee.manage_changeProperties(Expression= 'python: (4,)') ee.manage_changeProperties(Normalizer= 'python: (0,) + value') self.assertEqual(ki._evaluate(obj2).keys(),OOSet((0,1,2,4,)).keys()) # normalize - call it ee.manage_changeProperties(Normalizer= 'python: lambda v: (0,) + v') self.assertEqual(ki._evaluate(obj2).keys(),OOSet((0,1,2,4,)).keys()) # method ee.manage_changeProperties(Expression= "python: lambda object: object.kw") self.assertEqual(ki._evaluate(obj2).keys(),OOSet((0,1,2,)).keys()) ## combine # 'union' - already tested # 'useFirst' ki.CombineType= 'useFirst' self.assertEqual(ki._evaluate(obj2).keys(),OOSet((1,2,)).keys())
def addEditors(self): ki = KeywordIndex('editors') self.catalog._catalog.addIndex('editors', ki) ki._delObject('editors') ee = ExpressionEvaluator() ee.id = 'editors' ki._setObject(ee.id, ee) ki.editors._updateProperty('Expression', "python: lambda o: o.roles['editors']") self.catalog.reindexIndex('editors', REQUEST=None)
def _create_catalog(self): """Creates the ZCatalog instance for versioned objects""" self.catalog = ZCatalog('catalog') lexicon = PLexicon('lexicon', '', Splitter(), CaseNormalizer(), StopWordAndSingleCharRemover()) self.catalog._setObject('lexicon', lexicon) ZCText_extras = Empty() ZCText_extras.doc_attr = 'abstract' ZCText_extras.index_type = 'Okapi BM25 Rank' ZCText_extras.lexicon_id = 'lexicon' self.catalog.addIndex('abstract', 'ZCTextIndex', ZCText_extras) ZCText_extras.doc_attr = 'Title' self.catalog.addIndex('Title', 'ZCTextIndex', ZCText_extras) ZCText_extras.doc_attr = 'institution' self.catalog.addIndex('institution', 'ZCTextIndex', ZCText_extras) ZCText_extras.doc_attr = 'keywords' self.catalog.addIndex('keywordstext', 'ZCTextIndex', ZCText_extras) self.catalog.addIndex('atomicInstitution', 'FieldIndex', {'indexed_attrs': 'institution'}) self.catalog.addIndex('authors', 'KeywordIndex') self.catalog.addIndex('parentAuthors', 'KeywordIndex') self.catalog.addIndex('maintainers', 'KeywordIndex') self.catalog.addIndex('language', 'KeywordIndex') self.catalog.addIndex('modified', 'DateIndex') self.catalog.addIndex('revised', 'DateIndex') self.catalog.addIndex('objectId', 'FieldIndex') self.catalog.addIndex('portal_type', 'FieldIndex') self.catalog.addIndex('containedModuleIds', 'KeywordIndex') self.catalog.addIndex('subject', 'KeywordIndex') extra = Empty() extra.indexed_attrs = 'keywords' self.catalog.addIndex('keywordscase', 'KeywordIndex', extra) ki = KeywordIndex('keywords') self.catalog._catalog.addIndex('keywords', ki) ki._updateProperty('PrenormalizeTerm', 'python: value.lower()') ki._updateProperty('TermType', 'string') ki.keywords._updateProperty('Normalizer', 'python: [k.lower() for k in value]') ki = KeywordIndex('baselanguage') self.catalog._catalog.addIndex('baselanguage', ki) ki._updateProperty( 'PrenormalizeTerm', "python: value[:(value.find('-') > 0 ) and value.find('-') or len(value)]" ) ki.baselanguage._updateProperty('Name', 'language') ki.baselanguage._updateProperty( 'Normalizer', "python: [value[:(value.find('-') > 0 ) and value.find('-') or len(value)]]" ) fi = FieldIndex('sortTitle') self.catalog._catalog.addIndex('sortTitle', fi) fi._updateProperty('PrenormalizeTerm', 'python: value.lower()') fi._updateProperty('TermType', 'string') fi.sortTitle._updateProperty('Name', 'Title') fi.sortTitle._updateProperty('Normalizer', 'python: here.stripArticles(value)') fi = FieldIndex('parent') self.catalog._catalog.addIndex('parent', fi) fi.parent._updateProperty('Name', 'getParent') fi.parent._updateProperty('Normalizer', 'python:value.objectId') ki = KeywordIndex('translators') self.catalog._catalog.addIndex('translators', ki) ki._delObject('translators') ee = ExpressionEvaluator() ee.id = 'translators' ki._setObject(ee.id, ee) ki.translators._updateProperty( 'Expression', "python: lambda o: o.roles['translators']") ki = KeywordIndex('editors') self.catalog._catalog.addIndex('editors', ki) ki._delObject('editors') ee = ExpressionEvaluator() ee.id = 'editors' ki._setObject(ee.id, ee) ki.editors._updateProperty('Expression', "python: lambda o: o.roles['editors']") self._set_metadata() self._p_changed = 1
def _create_catalog(self): """Creates the ZCatalog instance for versioned objects""" self.catalog = ZCatalog('catalog') lexicon = PLexicon('lexicon', '' , Splitter(), CaseNormalizer(), StopWordAndSingleCharRemover()) self.catalog._setObject('lexicon', lexicon) ZCText_extras = Empty() ZCText_extras.doc_attr = 'abstract' ZCText_extras.index_type = 'Okapi BM25 Rank' ZCText_extras.lexicon_id = 'lexicon' self.catalog.addIndex('abstract', 'ZCTextIndex', ZCText_extras) ZCText_extras.doc_attr = 'Title' self.catalog.addIndex('Title', 'ZCTextIndex', ZCText_extras) ZCText_extras.doc_attr = 'institution' self.catalog.addIndex('institution', 'ZCTextIndex', ZCText_extras) ZCText_extras.doc_attr = 'keywords' self.catalog.addIndex('keywordstext', 'ZCTextIndex', ZCText_extras) self.catalog.addIndex('atomicInstitution', 'FieldIndex', {'indexed_attrs':'institution'}) self.catalog.addIndex('authors', 'KeywordIndex') self.catalog.addIndex('parentAuthors', 'KeywordIndex') self.catalog.addIndex('maintainers', 'KeywordIndex') self.catalog.addIndex('language', 'KeywordIndex') self.catalog.addIndex('modified', 'DateIndex') self.catalog.addIndex('revised', 'DateIndex') self.catalog.addIndex('objectId', 'FieldIndex') self.catalog.addIndex('portal_type', 'FieldIndex') self.catalog.addIndex('containedModuleIds', 'KeywordIndex') self.catalog.addIndex('subject', 'KeywordIndex') extra=Empty() extra.indexed_attrs='keywords' self.catalog.addIndex('keywordscase', 'KeywordIndex',extra) ki= KeywordIndex('keywords') self.catalog._catalog.addIndex('keywords', ki) ki._updateProperty('PrenormalizeTerm', 'python: value.lower()') ki._updateProperty('TermType', 'string') ki.keywords._updateProperty('Normalizer', 'python: [k.lower() for k in value]') ki=KeywordIndex('baselanguage') self.catalog._catalog.addIndex('baselanguage',ki) ki._updateProperty('PrenormalizeTerm', "python: value[:(value.find('-') > 0 ) and value.find('-') or len(value)]") ki.baselanguage._updateProperty('Name','language') ki.baselanguage._updateProperty('Normalizer', "python: [value[:(value.find('-') > 0 ) and value.find('-') or len(value)]]") fi=FieldIndex('sortTitle') self.catalog._catalog.addIndex('sortTitle',fi) fi._updateProperty('PrenormalizeTerm', 'python: value.lower()') fi._updateProperty('TermType', 'string') fi.sortTitle._updateProperty('Name', 'Title') fi.sortTitle._updateProperty('Normalizer', 'python: here.stripArticles(value)') fi=FieldIndex('parent') self.catalog._catalog.addIndex('parent',fi) fi.parent._updateProperty('Name', 'getParent') fi.parent._updateProperty('Normalizer', 'python:value.objectId') ki=KeywordIndex('translators') self.catalog._catalog.addIndex('translators',ki) ki._delObject('translators') ee=ExpressionEvaluator() ee.id='translators' ki._setObject(ee.id,ee) ki.translators._updateProperty('Expression',"python: lambda o: o.roles['translators']") ki=KeywordIndex('editors') self.catalog._catalog.addIndex('editors',ki) ki._delObject('editors') ee=ExpressionEvaluator() ee.id='editors' ki._setObject(ee.id,ee) ki.editors._updateProperty('Expression',"python: lambda o: o.roles['editors']") self._set_metadata() self._p_changed=1