Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 9 additions & 15 deletions c2corg_api/search/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
from c2corg_api.models.user_profile import USERPROFILE_TYPE
from c2corg_api.models.waypoint import WAYPOINT_TYPE
from c2corg_api.models.xreport import XREPORT_TYPE
from c2corg_api.models.coverage import COVERAGE_TYPE
from c2corg_api.search.mappings.area_mapping import SearchArea
from c2corg_api.search.mappings.article_mapping import SearchArticle
from c2corg_api.search.mappings.book_mapping import SearchBook
Expand All @@ -20,7 +19,6 @@
from c2corg_api.search.mappings.user_mapping import SearchUser
from c2corg_api.search.mappings.waypoint_mapping import SearchWaypoint
from c2corg_api.search.mappings.xreport_mapping import SearchXreport
from c2corg_api.search.mappings.coverage_mapping import SearchCoverage
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search
from elasticsearch_dsl.connections import connections
Expand Down Expand Up @@ -51,6 +49,7 @@ def client_from_config(settings):


def configure_es_from_config(settings):
global elasticsearch_config
client = client_from_config(settings)
connections.add_connection('default', client)
elasticsearch_config['client'] = client
Expand Down Expand Up @@ -90,19 +89,15 @@ def get_text_query_on_title(search_term, search_lang=None):
else:
mots = True

if not search_lang:
# fall back to searching every language when none is given, using
# explicit field names rather than a `title_*` wildcard so the query
# does not depend on ES resolving the field pattern correctly.
langs = [search_lang] if search_lang else default_langs
for lang in langs:
if not mots:
fields.append('title_*.ngram')
fields.append('title_{0}.ngram'.format(lang))
else:
fields.append('title_*.contentheavy')

else:
for lang in default_langs:
if lang == search_lang:
if not mots:
fields.append('title_{0}.ngram'.format(lang))
else:
fields.append('title_{0}.contentheavy'.format(lang))
fields.append('title_{0}.contentheavy'.format(lang))

if not mots:
return MultiMatch(
Expand Down Expand Up @@ -136,6 +131,5 @@ def get_text_query_on_title(search_term, search_lang=None):
ROUTE_TYPE: SearchRoute,
MAP_TYPE: SearchTopoMap,
USERPROFILE_TYPE: SearchUser,
WAYPOINT_TYPE: SearchWaypoint,
COVERAGE_TYPE: SearchCoverage,
WAYPOINT_TYPE: SearchWaypoint
}
6 changes: 6 additions & 0 deletions c2corg_api/search/search.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import logging

from c2corg_api.search import create_search, elasticsearch_config, \
get_text_query_on_title
from c2corg_api.views.document_listings import get_documents
from elasticsearch_dsl.search import MultiSearch

log = logging.getLogger(__name__)


def search_for_types(search_types, search_term, limit, lang):
"""Get results for all given types.
Expand Down Expand Up @@ -48,6 +52,8 @@ def do_multi_search_for_types(search_types, search_term, limit, lang):
query(get_text_query_on_title(search_term, lang)).\
fields([]).\
extra(from_=0, size=limit)
log.debug('Search filter for type {}: {}'.format(
get_documents_config.document_type, search.to_dict()))
multi_search = multi_search.add(search)

responses = multi_search.execute()
Expand Down
Loading