Source code for django_elasticsearch_dsl_drf.filter_backends.search.simple_query_string

"""Simple query string search filter backend."""
import logging

from django.core.exceptions import ImproperlyConfigured

from ...constants import MATCHING_OPTION_MUST, MATCHING_OPTIONS
from .base import BaseSearchFilterBackend
from .query_backends import (
    SimpleQueryStringQueryBackend,
)

LOGGER = logging.getLogger(__name__)


__title__ = 'django_elasticsearch_dsl_drf.filter_backends.search.' \
            'simple_query_string'
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
__copyright__ = '2017-2019 Artur Barseghyan'
__license__ = 'GPL 2.0/LGPL 2.1'
__all__ = (
    'SimpleQueryStringSearchFilterBackend',
)


[docs]class SimpleQueryStringSearchFilterBackend(BaseSearchFilterBackend): """Simple query string search filter backend.""" search_param = 'search_simple_query_string' matching = MATCHING_OPTION_MUST query_backends = [ SimpleQueryStringQueryBackend, ]
# def filter_queryset(self, request, queryset, view): # """Filter the queryset. # # :param request: Django REST framework request. # :param queryset: Base queryset. # :param view: View. # :type request: rest_framework.request.Request # :type queryset: elasticsearch_dsl.search.Search # :type view: rest_framework.viewsets.ReadOnlyModelViewSet # :return: Updated queryset. # :rtype: elasticsearch_dsl.search.Search # """ # if self.matching not in MATCHING_OPTIONS: # raise ImproperlyConfigured( # "Your `matching` value does not match the allowed matching" # "options: {}".format(', '.join(MATCHING_OPTIONS)) # ) # # __queries = [] # # for query_backend in self._get_query_backends(request, view): # __queries.extend( # query_backend.construct_search( # request=request, # view=view, # search_backend=self # ) # ) # # if __queries: # # LOGGER.debug( # # six.moves.reduce(operator.or_, __queries).to_dict() # # ) # # # Multiple multi match queries are not supported. We pick the # # first one only. # queryset = queryset.query(__queries[0]) # # queryset = queryset.query( # # query=six.moves.reduce(operator.or_, __queries) # # ) # # # LOGGER.debug(queryset.to_dict()) # # return queryset