search.py 1.24 KB
import typesense

TYPESENSE_API = open('./docs/typesense').read().strip()
client = typesense.Client({
    'api_key': TYPESENSE_API,
    'nodes': [{
        'host': 'localhost',
        'port': '8108',
        'protocol': 'http'
    }],
    'connection_timeout_seconds': 2
})

COLLECTION = 'presup_actpro_fts'
schema = {
    'name': COLLECTION,
    'fields': [
        {'name': 'index', 'type': 'int32'},
        {'name': 'gestion', 'type': 'int32', 'facet': True},
        {'name': 'entidad', 'type': 'int32',},
        {'name': 'programa', 'type': 'int32',},
        {'name': 'proyecto', 'type': 'string',},
        {'name': 'actividad', 'type': 'int32',},
        {'name': 'desc_actividad_proyecto', 'type': 'string'},
        {'name': 'devengado', 'type': 'float'},
    ],
    'default_sorting_field': 'devengado',
}

search_parameters = {
    "q": "cuba",
    "query_by": "desc_actividad_proyecto,desc_programa",
    "facet_by": "gestion",
    "sort_by": "devengado:desc",
    "per_page": 20,
}



def do_search(query, page):
	search_parameters_ = search_parameters.copy()
	search_parameters_['q'] = query

	if (page is not None) and (page > 0):
		search_parameters_['page'] = page

	return client.collections[COLLECTION].documents.search(
		search_parameters_
	)