Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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.')
Ejemplo n.º 5
0
    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)