From de6f1cf45fb53812036c72fca13c84afe10bcf60 Mon Sep 17 00:00:00 2001 From: Mauricio Fagundes Date: Tue, 15 Aug 2023 17:39:39 -0300 Subject: [PATCH] Refactor/search enhancement (#309) --- basedosdados_api/api/v1/search_indexes.py | 13 ++----------- basedosdados_api/api/v1/views.py | 11 +++++++++-- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/basedosdados_api/api/v1/search_indexes.py b/basedosdados_api/api/v1/search_indexes.py index 71aad97b..c5c2d7ae 100644 --- a/basedosdados_api/api/v1/search_indexes.py +++ b/basedosdados_api/api/v1/search_indexes.py @@ -14,7 +14,7 @@ class DatasetIndex(indexes.SearchIndex, indexes.Indexable): organization_id = indexes.CharField(model_attr="organization__id", null=True) organization_slug = indexes.CharField(model_attr="organization__slug") - organization_name = indexes.CharField(model_attr="organization__name") + organization_name = indexes.EdgeNgramField(model_attr="organization__name") organization_description = indexes.CharField( model_attr="organization__description", null=True ) @@ -27,7 +27,7 @@ class DatasetIndex(indexes.SearchIndex, indexes.Indexable): table_ids = indexes.MultiValueField(model_attr="tables__id", null=True) table_slugs = indexes.MultiValueField(model_attr="tables__slug", null=True) - table_names = indexes.MultiValueField(model_attr="tables__name", null=True) + table_names = indexes.EdgeNgramField(model_attr="tables__name", null=True) table_descriptions = indexes.EdgeNgramField( model_attr="tables__description", null=True ) @@ -142,15 +142,6 @@ def prepare(self, obj): table_ids = data.get("table_slugs", []) if table_ids: data["tables"] = [] - for i in range(len(table_ids)): - data["tables"].append( - { - "id": data.get("table_ids", [])[i], - "name": data.get("table_names", [])[i], - "slug": data.get("table_slugs", [])[i], - "is_closed": data.get("table_is_closed", [])[i], - } - ) data["total_tables"] = len(table_ids) else: data["total_tables"] = 0 diff --git a/basedosdados_api/api/v1/views.py b/basedosdados_api/api/v1/views.py index 1ce7e95b..95d21daa 100644 --- a/basedosdados_api/api/v1/views.py +++ b/basedosdados_api/api/v1/views.py @@ -34,10 +34,14 @@ def get(self, request, *args, **kwargs): storage = get_storage_class() - # If query is empty, query all datasets if not query: + # If query is empty, query all datasets query = {"match_all": {}} + # Factor to multiply the number of tables by + # Has no effect if no query is passed + n_table_factor = 0 else: + # If query is not empty, query datasets and tables query = { "bool": { "should": [ @@ -50,9 +54,12 @@ def get(self, request, *args, **kwargs): } }, {"match": {"name.edgengram": query}}, + {"match": {"table_names.edgengram": query}}, + {"match": {"organization_name.edgengram": query}}, ] } } + n_table_factor = 2 all_filters = [] @@ -147,7 +154,7 @@ def get(self, request, *args, **kwargs): "field_value_factor": { "field": "n_tables", "modifier": "square", - "factor": 2, + "factor": n_table_factor, "missing": 0, } },