From 03de067006901da76caa06cd42d42aa28eff7bef Mon Sep 17 00:00:00 2001 From: Sny Date: Mon, 26 Apr 2021 16:13:34 +0530 Subject: [PATCH] OpenConceptLab/ocl_issues#649 | concept name search | hyphen is converted into underscore --- core/common/views.py | 12 ++++++++++-- core/concepts/documents.py | 9 ++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/core/common/views.py b/core/common/views.py index f00d20f69..6f3c70628 100644 --- a/core/common/views.py +++ b/core/common/views.py @@ -142,6 +142,7 @@ def get_exact_search_fields(self): def get_search_string(self, lower=True): search_str = self.request.query_params.dict().get(SEARCH_PARAM, '').strip() + search_str = search_str.replace('-', '_') if lower: search_str = search_str.lower() @@ -340,6 +341,10 @@ def is_user_document(self): from core.users.documents import UserProfileDocument return self.document_model == UserProfileDocument + def is_concept_document(self): + from core.concepts.documents import ConceptDocument + return self.document_model == ConceptDocument + def is_owner_document_model(self): from core.orgs.documents import OrganizationDocument from core.users.documents import UserProfileDocument @@ -448,13 +453,16 @@ def __search_results(self): # pylint: disable=too-many-branches,too-many-locals def get_wildcard_search_criterion(self): search_string = self.get_search_string() wildcard_search_string = self.get_wildcard_search_string() + name_attr = 'name' + if self.is_concept_document(): + name_attr = '_name' return Q( "wildcard", id=dict(value=search_string, boost=2) ) | Q( - "wildcard", name=dict(value=search_string, boost=5) + "wildcard", **{name_attr: dict(value=search_string, boost=5)} ) | Q( - "query_string", query=wildcard_search_string, fields=self.get_searchable_fields() + "query_string", query=wildcard_search_string ) def get_search_results_qs(self): diff --git a/core/concepts/documents.py b/core/concepts/documents.py index 8db280176..6d3bf49b9 100644 --- a/core/concepts/documents.py +++ b/core/concepts/documents.py @@ -12,7 +12,7 @@ class Index: settings = {'number_of_shards': 1, 'number_of_replicas': 0} id = fields.KeywordField(attr='mnemonic', normalizer="lowercase") - name = fields.TextField(attr='display_name') + name = fields.TextField() _name = fields.KeywordField(attr='display_name', normalizer='lowercase') last_update = fields.DateField(attr='updated_at') locale = fields.ListField(fields.KeywordField(attr='display_name')) @@ -38,6 +38,13 @@ class Django: 'external_id', ] + @staticmethod + def prepare_name(instance): + name = instance.display_name + if name: + name = name.replace('-', '_') + return name + @staticmethod def prepare_locale(instance): return list(