|
9 | 9 | from c2corg_api.models.user_profile import USERPROFILE_TYPE |
10 | 10 | from c2corg_api.models.waypoint import WAYPOINT_TYPE |
11 | 11 | from c2corg_api.models.xreport import XREPORT_TYPE |
12 | | -from c2corg_api.models.coverage import COVERAGE_TYPE |
13 | 12 | from c2corg_api.search.mappings.area_mapping import SearchArea |
14 | 13 | from c2corg_api.search.mappings.article_mapping import SearchArticle |
15 | 14 | from c2corg_api.search.mappings.book_mapping import SearchBook |
|
20 | 19 | from c2corg_api.search.mappings.user_mapping import SearchUser |
21 | 20 | from c2corg_api.search.mappings.waypoint_mapping import SearchWaypoint |
22 | 21 | from c2corg_api.search.mappings.xreport_mapping import SearchXreport |
23 | | -from c2corg_api.search.mappings.coverage_mapping import SearchCoverage |
24 | 22 | from elasticsearch import Elasticsearch |
25 | 23 | from elasticsearch_dsl import Search |
26 | 24 | from elasticsearch_dsl.connections import connections |
@@ -51,6 +49,7 @@ def client_from_config(settings): |
51 | 49 |
|
52 | 50 |
|
53 | 51 | def configure_es_from_config(settings): |
| 52 | + global elasticsearch_config |
54 | 53 | client = client_from_config(settings) |
55 | 54 | connections.add_connection('default', client) |
56 | 55 | elasticsearch_config['client'] = client |
@@ -90,19 +89,15 @@ def get_text_query_on_title(search_term, search_lang=None): |
90 | 89 | else: |
91 | 90 | mots = True |
92 | 91 |
|
93 | | - if not search_lang: |
| 92 | + # fall back to searching every language when none is given, using |
| 93 | + # explicit field names rather than a `title_*` wildcard so the query |
| 94 | + # does not depend on ES resolving the field pattern correctly. |
| 95 | + langs = [search_lang] if search_lang else default_langs |
| 96 | + for lang in langs: |
94 | 97 | if not mots: |
95 | | - fields.append('title_*.ngram') |
| 98 | + fields.append('title_{0}.ngram'.format(lang)) |
96 | 99 | else: |
97 | | - fields.append('title_*.contentheavy') |
98 | | - |
99 | | - else: |
100 | | - for lang in default_langs: |
101 | | - if lang == search_lang: |
102 | | - if not mots: |
103 | | - fields.append('title_{0}.ngram'.format(lang)) |
104 | | - else: |
105 | | - fields.append('title_{0}.contentheavy'.format(lang)) |
| 100 | + fields.append('title_{0}.contentheavy'.format(lang)) |
106 | 101 |
|
107 | 102 | if not mots: |
108 | 103 | return MultiMatch( |
@@ -136,6 +131,5 @@ def get_text_query_on_title(search_term, search_lang=None): |
136 | 131 | ROUTE_TYPE: SearchRoute, |
137 | 132 | MAP_TYPE: SearchTopoMap, |
138 | 133 | USERPROFILE_TYPE: SearchUser, |
139 | | - WAYPOINT_TYPE: SearchWaypoint, |
140 | | - COVERAGE_TYPE: SearchCoverage, |
| 134 | + WAYPOINT_TYPE: SearchWaypoint |
141 | 135 | } |
0 commit comments