def installCatalog(self): '''Create the catalog at the root of Zope if id does not exist.''' if 'catalog' not in self.app.objectIds(): # Create the catalog from Products.ZCatalog.ZCatalog import manage_addZCatalog manage_addZCatalog(self.app, 'catalog', '') self.logger.info('Appy catalog created.') # Create a lexicon for ZCTextIndexes if 'lexicon' not in self.app.catalog.objectIds(): from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon manage_addLexicon(self.app.catalog, 'lexicon', elements=self.lexiconInfos) # Create or update Appy-wide indexes and field-related indexes indexInfo = {'State': 'FieldIndex', 'UID': 'FieldIndex', 'Title': 'ZCTextIndex', 'SortableTitle': 'FieldIndex', 'SearchableText': 'ZCTextIndex', 'Creator': 'FieldIndex', 'Created': 'DateIndex', 'ClassName': 'FieldIndex', 'Allowed': 'KeywordIndex'} tool = self.app.config for className in self.config.attributes.iterkeys(): wrapperClass = tool.getAppyClass(className, wrapper=True) for appyType in wrapperClass.__fields__: if not appyType.indexed or (appyType.name == 'title'): continue n = appyType.name indexName = 'get%s%s' % (n[0].upper(), n[1:]) indexInfo[indexName] = appyType.getIndexType() self.installIndexes(indexInfo)
def __init__(self, id, title, skelton, fileattache, parent, elements): if elements: from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon manage_addLexicon(self,id='lexicon',elements = elements) self.__of__(parent)._buildIndexing(id,title) t=time() self.created = t self.modified = t self.fileattache = fileattache self.data =IOBTree() # id -> Message self.ids =IISet() # ids of children self.loadSkelton(None, skelton) self.loadProperties(skelton) self.skelton = skelton
def installCatalog(self): '''Create the catalog at the root of Zope if id does not exist.''' if 'catalog' not in self.app.objectIds(): # Create the catalog from Products.ZCatalog.ZCatalog import manage_addZCatalog manage_addZCatalog(self.app, 'catalog', '') self.logger.info('Appy catalog created.') # Create lexicons for ZCTextIndexes catalog = self.app.catalog lexicons = catalog.objectIds() from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon if 'xhtml_lexicon' not in lexicons: lex = appy.Object(group='XHTML indexer', name='XHTML indexer') manage_addLexicon(catalog, 'xhtml_lexicon', elements=[lex]) if 'text_lexicon' not in lexicons: lex = appy.Object(group='Text indexer', name='Text indexer') manage_addLexicon(catalog, 'text_lexicon', elements=[lex]) if 'list_lexicon' not in lexicons: lex = appy.Object(group='List indexer', name='List indexer') manage_addLexicon(catalog, 'list_lexicon', elements=[lex]) # Delete the deprecated one if it exists if 'lexicon' in lexicons: catalog.manage_delObjects(['lexicon']) # Create or update Appy-wide indexes and field-related indexes indexInfo = defaultIndexes.copy() tool = self.app.config for className in self.config.attributes.iterkeys(): wrapperClass = tool.getAppyClass(className, wrapper=True) indexInfo.update(wrapperClass.getIndexes(includeDefaults=False)) updateIndexes(self, indexInfo)
def installCatalog(self): '''Create the catalog at the root of Zope if id does not exist.''' if 'catalog' not in self.app.objectIds(): # Create the catalog from Products.ZCatalog.ZCatalog import manage_addZCatalog manage_addZCatalog(self.app, 'catalog', '') self.logger.info('Appy catalog created.') # Create lexicons for ZCTextIndexes catalog = self.app.catalog lexicons = catalog.objectIds() from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon if 'xhtml_lexicon' not in lexicons: lex = appy.Object(group='XHTML indexer', name='XHTML indexer') manage_addLexicon(catalog, 'xhtml_lexicon', elements=[lex]) if 'text_lexicon' not in lexicons: lex = appy.Object(group='Text indexer', name='Text indexer') manage_addLexicon(catalog, 'text_lexicon', elements=[lex]) if 'list_lexicon' not in lexicons: lex = appy.Object(group='List indexer', name='List indexer') manage_addLexicon(catalog, 'list_lexicon', elements=[lex]) # Delete the deprecated one if it exists if 'lexicon' in lexicons: catalog.manage_delObjects(['lexicon']) # Create or update Appy-wide indexes and field-related indexes indexInfo = defaultIndexes.copy() tool = self.app.config for className in self.config.attributes.iterkeys(): wrapperClass = tool.getAppyClass(className, wrapper=True) indexInfo.update(wrapperClass.getIndexes(includeDefaults=False)) updateIndexes(self, indexInfo) # Re-index index "SearchableText", wrongly defined for Appy < 0.8.3. stIndex = catalog.Indexes['SearchableText'] if stIndex.indexSize() == 0: self.logger.info('reindexing SearchableText...') catalog.reindexIndex('SearchableText', self.app.REQUEST) self.logger.info('done.')
def __addLexicons(self): #Adds the default lexicons elements = [] wordSplitter = MyData() wordSplitter.group = 'Word Splitter' wordSplitter.name = 'HTML aware splitter' caseNormalizer = MyData() caseNormalizer.group = 'Case Normalizer' caseNormalizer.name = 'Case Normalizer' stopWords = MyData() stopWords.group = 'Stop Words' stopWords.name = ALISS_LEXICON_REMOVE_SW_AND_SINGLE elements.append(wordSplitter) elements.append(caseNormalizer) elements.append(stopWords) id = 'Lexicon' title = 'Default Lexicon' manage_addLexicon(self, id, title, elements) elements = [] wordSplitter = MyData() wordSplitter.group = 'Word Splitter' wordSplitter.name = 'HTML aware splitter' caseNormalizer = MyData() caseNormalizer.group = 'Case Normalizer' caseNormalizer.name = 'Case Normalizer' stopWords = MyData() stopWords.group = 'Stop Words' stopWords.name = " Don't remove stop words" elements.append(wordSplitter) elements.append(caseNormalizer) elements.append(stopWords) id = 'LexiconID' title = 'Default Lexicon for IDs' manage_addLexicon(self, id, title, elements) elements = [] wordSplitter = MyData() wordSplitter.group = 'Word Splitter' wordSplitter.name = 'Unicode Whitespace splitter' caseNormalizer = MyData() caseNormalizer.group = 'Case Normalizer' caseNormalizer.name = 'Unicode Case Normalizer' stopWords = MyData() stopWords.group = 'Stop Words' stopWords.name = " Don't remove stop words" elements.append(wordSplitter) elements.append(caseNormalizer) elements.append(stopWords) id = 'LexiconUnicode' title = 'Unicode Lexicon' manage_addLexicon(self, id, title, elements)