search.py 1.17 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': 'gestion', 'type': 'int32', 'facet': True},
        {'name': 'devengado', 'type': 'float'},
        {'name': 'is_class', 'type': 'bool'},
        {'name': 'texto', 'type': 'string'},
        {'name': 'metadatos', 'type': 'string'},
	],
	'default_sorting_field': 'devengado',
}

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



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

	if is_class is not None:
		filter_c = ''
		if is_class:
			filter_c = 'is_class:true'
		else:
			filter_c = 'is_class:false'

		search_parameters_['filter_by'] = filter_c

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

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