From 62fbc6693a168149866fe72248ebe0d8bc3e5913 Mon Sep 17 00:00:00 2001 From: mathieu Date: Fri, 29 Apr 2016 18:12:39 +0200 Subject: [PATCH] Remodif mapping ES (en cours) --- env/debug.env | 2 +- modif telemeta | 32 ++++++++++++++++++++++++++++++-- telemeta/forms/haystack_form.py | 7 ++++--- telemeta/util/backend.py | 16 ++++++++++------ 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/env/debug.env b/env/debug.env index a19e3477..7a9fbbcc 100644 --- a/env/debug.env +++ b/env/debug.env @@ -18,4 +18,4 @@ BROKER_URL=redis://broker:6379/0 # If this is True, all tasks will be executed locally by blocking until the task returns. CELERY_ALWAYS_EAGER=False -REINDEX=False +REINDEX=True diff --git a/modif telemeta b/modif telemeta index 23951d52..3a0adafe 100644 --- a/modif telemeta +++ b/modif telemeta @@ -1,6 +1,34 @@ -pas assez d items dans recherche +date enreg -> periode enr + +en ligne /acces compte marche pas + +taille max analyzer ES prod + +message attente autoc. + +verif format cote recherche (ex : _I_1995_ ) simple + +message erreur annee + +autoc lieu + +titre recherche bool -filtres apparait 1 fois sur 2 +item deja dans liste + +inedits/edites X2 filtres + +1893 annee fantome + +fin traduc (Maj + fonctions supp) + +cahngement page : reste sur mm tri + +verif req bool quand valid avancee + +completer form quand recherche avancee avec resultats + +pas assez d items dans recherche nb items enum + liste diff --git a/telemeta/forms/haystack_form.py b/telemeta/forms/haystack_form.py index cd47006f..777a37a7 100644 --- a/telemeta/forms/haystack_form.py +++ b/telemeta/forms/haystack_form.py @@ -205,11 +205,12 @@ class HayAdvanceForm(SearchForm): if self.cleaned_data.get('ethnic_group') != '': sqs = sqs.filter(ethnic_group__contains=self.cleaned_data['ethnic_group']) - if self.cleaned_data.get('instruments'): - sqs = sqs.filter(self.filterInstru(self.cleaned_data['instruments']))# + if self.cleaned_data.get('instruments'):# + print(self.filterInstru(self.cleaned_data['instruments'])) + sqs = sqs.filter(self.filterInstru(self.cleaned_data['instruments'])) if self.cleaned_data.get('collectors'): - sqs = sqs.filter(collectors__contains=self.cleaned_data['collectors']) + sqs = sqs.filter(collectors__startswith=self.cleaned_data['collectors']) if self.cleaned_data['recorded_from_date']: sqs = sqs.filter(recorded_from_date__gte=self.cleaned_data['recorded_from_date']) diff --git a/telemeta/util/backend.py b/telemeta/util/backend.py index 17e542b7..3db02c1e 100644 --- a/telemeta/util/backend.py +++ b/telemeta/util/backend.py @@ -1,6 +1,10 @@ # -*- coding: utf-8 -*- from haystack.backends.elasticsearch_backend import * +import string +import re + +regexSpacePunc = "[\\s"+re.escape(string.punctuation)+"]+" class CustomElasticBackend(ElasticsearchSearchBackend): @@ -9,21 +13,21 @@ class CustomElasticBackend(ElasticsearchSearchBackend): FIELD_MAPPINGS['keyword'] = {'type': 'string', 'analyzer':'lowercase_analyzer'} eb = super(CustomElasticBackend, self) eb.DEFAULT_SETTINGS.get('settings').get('analysis').get('tokenizer')['esc_scape_tokenizer']=\ - {"type": "pattern", "pattern": "\\s|\\|"} + {"type": "pattern", "pattern": regexSpacePunc} eb.DEFAULT_SETTINGS.get('settings').get('analysis').get('analyzer')['whitespace_asciifolding_analyzer']=\ - {"type": "custom", "tokenizer": "esc_scape_tokenizer", "filter": ["lowercase", "word_delimiter", "asciifolding"]} + {"type": "custom", "tokenizer": "esc_scape_tokenizer", "filter": ["lowercase", "asciifolding"]} eb.DEFAULT_SETTINGS.get('settings').get('analysis').get('analyzer')['lowercase_analyzer'] = \ {"type": "custom", "tokenizer": "keyword", "filter": ["lowercase"]} eb.setup() -import unicodedata -class CustomElasticSearchQuery(ElasticsearchSearchQuery): +import unicodedata# +class CustomElasticSearchQuery(ElasticsearchSearchQuery):# def build_query_fragment(self, field, filter_type, value): - #print(field, ' ', filter_type, ' ', value) + print("Query fragment :"+ field+ ' '+ filter_type+ ' '+ value) valeur = super(CustomElasticSearchQuery, self).build_query_fragment(field, filter_type, value) - #print(valeur) + print("Query fragment result "+ valeur) return valeur def build_query(self): -- 2.39.5