search.py
1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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_
)