@@ -130,7 +130,7 @@ class FunctionalSuggesterFilterBackend(BaseFilterBackend, FilterBackendMixin):
130130 >>> FunctionalSuggesterFilterBackend,
131131 >>> ]
132132 >>> # Suggester fields
133- >>> suggester_fields = {
133+ >>> functional_suggester_fields = {
134134 >>> 'name_suggest': {
135135 >>> 'field': 'name.suggest',
136136 >>> 'suggesters': [
@@ -231,6 +231,21 @@ def prepare_suggester_fields(cls, view):
231231 # phrase={'field': options['field']}
232232 # )
233233
234+ @classmethod
235+ def apply_query_size (cls , queryset , options ):
236+ """Apply query size.
237+
238+ :param queryset:
239+ :param options:
240+ :return:
241+ """
242+ if 'size' in options ['options' ]:
243+ queryset = queryset .extra (
244+ from_ = options ['options' ].get ('from' , 0 ),
245+ size = options ['options' ]['size' ]
246+ )
247+ return queryset
248+
234249 @classmethod
235250 def apply_suggester_completion_prefix (cls ,
236251 suggester_name ,
@@ -256,6 +271,7 @@ def apply_suggester_completion_prefix(cls,
256271 'prefix' ,
257272 ** {options ['field' ]: value }
258273 )
274+ queryset = cls .apply_query_size (queryset , options )
259275 return queryset
260276
261277 @classmethod
@@ -283,6 +299,7 @@ def apply_suggester_completion_match(cls,
283299 'match' ,
284300 ** {options ['field' ]: value }
285301 )
302+ queryset = cls .apply_query_size (queryset , options )
286303 return queryset
287304
288305 def get_suggester_query_params (self , request , view ):
@@ -313,13 +330,18 @@ def get_suggester_query_params(self, request, view):
313330
314331 valid_suggesters = suggester_fields [field_name ]['suggesters' ]
315332
333+ suggester_options = {}
334+
316335 # If we have default suggester given use it as a default and
317336 # do not require further suffix specification.
318337 default_suggester = None
319338 if 'default_suggester' in suggester_fields [field_name ]:
320339 default_suggester = \
321340 suggester_fields [field_name ]['default_suggester' ]
322341
342+ if 'options' in suggester_fields [field_name ]:
343+ suggester_options = suggester_fields [field_name ]['options' ]
344+
323345 if suggester_param is None \
324346 or suggester_param in valid_suggesters :
325347
@@ -360,6 +382,7 @@ def get_suggester_query_params(self, request, view):
360382 ),
361383 'type' : view .mapping ,
362384 'serializer_field' : serializer_field ,
385+ 'options' : suggester_options ,
363386 }
364387 return suggester_query_params
365388
0 commit comments