Newer
Older
# -*- coding: utf-8 -*-
# copyright 2016 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
# contact http://www.logilab.fr -- mailto:contact@logilab.fr
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 2.1 of the License, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
INDEXABLE_TYPES = None
def index_settings():
return {'analysis':
{'analyzer':
{'default': {'filter': ['standard',

Arthur Lutz
committed
'my_ascii_folding',
'lowercase',
'french_snowball',],
'tokenizer': 'standard'}},
'filter': {'my_ascii_folding': {'preserve_original': True,

Arthur Lutz
committed
'type': 'asciifolding'},
'french_snowball': {'type': 'snowball',
'language': 'French'},
}
}
}
def indexable_types(schema):
global INDEXABLE_TYPES
if INDEXABLE_TYPES is not None:
return INDEXABLE_TYPES
indexable_types = []
skip_list = ('TrInfo', 'EmailAddress')
for eschema in schema.entities():
if eschema.type in skip_list:
continue
if not eschema.final:
# check eschema.fulltext_relations() ? (skip wf_info_for ?
# )
if list(eschema.indexable_attributes()):
indexable_types.append(eschema.type)
INDEXABLE_TYPES = indexable_types
return indexable_types