Skip to content

Commit 2339f29

Browse files
fixes:
1 parent a920d54 commit 2339f29

File tree

4 files changed

+33
-10
lines changed

4 files changed

+33
-10
lines changed

examples/simple/search_indexes/viewsets/author.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,14 @@ class AuthorDocumentViewSet(DocumentViewSet):
8787
FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
8888
],
8989
'default_suggester': FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
90-
'serializer_field': 'name',
90+
# 'serializer_field': 'name',
9191
},
9292
'salutation.suggest': {
9393
'field': 'salutation.raw',
9494
'suggesters': [
9595
FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
9696
],
9797
'default_suggester': FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
98-
'serializer_field': 'salutation',
98+
# 'serializer_field': 'salutation',
9999
},
100100
}

examples/simple/search_indexes/viewsets/book.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,13 +270,13 @@ class BookFunctionalSuggesterDocumentViewSet(
270270
FUNCTIONAL_SUGGESTER_COMPLETION_MATCH,
271271
],
272272
'default_suggester': FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
273-
'serializer_field': 'title',
273+
# 'serializer_field': 'title',
274274
},
275275
'title_suggest_match': {
276276
'field': 'title.edge_ngram_completion',
277277
'suggesters': [FUNCTIONAL_SUGGESTER_COMPLETION_MATCH],
278278
'default_suggester': FUNCTIONAL_SUGGESTER_COMPLETION_MATCH,
279-
'serializer_field': 'title',
279+
# 'serializer_field': 'title',
280280
}
281281
# 'publisher_suggest': 'publisher.suggest',
282282
# 'tag_suggest': 'tags.suggest',

examples/simple/search_indexes/viewsets/publisher.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,30 +123,30 @@ class PublisherDocumentViewSet(DocumentViewSet):
123123
FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
124124
],
125125
'default_suggester': FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
126-
'serializer_field': 'name',
126+
# 'serializer_field': 'name',
127127
},
128128
'city_suggest': {
129129
'field': 'city.raw',
130130
'suggesters': [
131131
FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
132132
],
133133
'default_suggester': FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
134-
'serializer_field': 'city',
134+
# 'serializer_field': 'city',
135135
},
136136
'state_province_suggest': {
137137
'field': 'state_province.suggest',
138138
'suggesters': [
139139
FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
140140
],
141141
'default_suggester': FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
142-
'serializer_field': 'state_province',
142+
# 'serializer_field': 'state_province',
143143
},
144144
'country_suggest': {
145145
'field': 'country.raw',
146146
'suggesters': [
147147
FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
148148
],
149149
'default_suggester': FUNCTIONAL_SUGGESTER_COMPLETION_PREFIX,
150-
'serializer_field': 'country',
150+
# 'serializer_field': 'country',
151151
},
152152
}

src/django_elasticsearch_dsl_drf/filter_backends/suggester/functional.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,8 +331,19 @@ def get_suggester_query_params(self, request, view):
331331
if __value.strip() != ''
332332
]
333333

334-
serializer_field = \
335-
suggester_fields[field_name]['serializer_field']
334+
# If specific field given, use that. Otherwise,
335+
# fall back to the top level field name.
336+
if 'serializer_field' in suggester_fields[field_name]:
337+
serializer_field = \
338+
suggester_fields[field_name]['serializer_field']
339+
else:
340+
serializer_field = suggester_fields[field_name].get(
341+
'field',
342+
field_name
343+
)
344+
serializer_field = self.extract_field_name(
345+
serializer_field
346+
)
336347

337348
if values:
338349
suggester_query_params[query_param] = {
@@ -396,6 +407,18 @@ def serialize_queryset(self,
396407
}
397408
return data
398409

410+
def extract_field_name(self, field_name):
411+
"""Extract field name.
412+
413+
For instance, "name.suggest" or "name.raw" becomes "name".
414+
415+
:param field_name:
416+
:type str:
417+
:return:
418+
:rtype: str
419+
"""
420+
return field_name.split('.')[0]
421+
399422
def filter_queryset(self, request, queryset, view):
400423
"""Filter the queryset.
401424

0 commit comments

Comments
 (0)