Я использую Хейстек 2.3.0, и у меня есть индекс поиска, как:Стог: Выделите только одно поле
class MyModelIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.EdgeNgramField(model_attr='name', boost=1.250)
short_description = indexes.CharField(model_attr='short_description', null=True, boost=1.125)
description = indexes.CharField(model_attr='description', null=True, boost=1.125)
detail_description = indexes.CharField(model_attr='detail_description', null=True)
def get_model(self):
return MyModel
Я хотел бы выделить только поле detail_description
. Я прочитал в official documentation этот пример:
sqs = SearchQuerySet().filter(content='foo').highlight()
result = sqs[0]
result.highlighted['text'][0]
Но когда я пытаюсь сделать это я не получаю тот же результат. В приведенном выше примере, result.highlighted
кажется словарь, где вы можете получить доступ к изюминке каждому полю:
result.highlighted['text'][0]
Но в моем примере, когда я делаю то же самое, result.highlighted
не словарь, его является списком и возвращает только выделение поля text
.
- Как я могу выделить выделение для конкретного поля?
так, 'number_of_fragments', кажется, '0', и из-за этого ElasticSearch возвращается только 1 поле? Спасибо за то, что указали мне в хорошем направлении, я собираюсь погрузиться в документацию Haystack. – AlvaroAV
Несомненно, я предполагаю, что он должен быть там в вызове функции highlight() –
Документация Haystack говорит, что вызов функции подсветки не получает никаких аргументов ! Но спасибо, что помогли мне понять, почему это происходит! – AlvaroAV