Использование подсветки Elasticsearch:
"highlight": {
"fields": {
"tags": { "number_of_fragments": 0 }
}
}
С number_of_fragments: 0
не создаются фрагменты, но возвращается все содержимое поля. Это полезно для коротких текстов, поскольку документы могут отображаться как обычно, и люди могут легко сканировать выделенные части.
Как вы используете это, когда документ содержит массив с несколькими значениями?
PUT /test/doc/1
{
"tags": [
"one hit tag",
"two foo tag",
"three hit tag",
"four foo tag"
]
}
GET /test/doc/_search
{
"query": {
"match": { "tags": "hit"}
},
"highlight": {
"fields": {
"tags": { "number_of_fragments": 0 }
}
}
}
Теперь, что бы я хотел показать пользователю:
1 результат:
Документ 1, помеченный:
"один хит тег", "два тега foo", "три тега хит", "четыре тега foo"
К сожалению, это результат запроса:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.10848885,
"hits": [
{
"_index": "test",
"_type": "doc",
"_id": "1",
"_score": 0.10848885,
"_source": {
"tags": [
"one hit tag",
"two foo tag",
"three hit tag",
"four foo tag"
]
},
"highlight": {
"tags": [
"one <em>hit</em> tag",
"three <em>hit</em> tag"
]
}
}
]
}
}
Как я могу использовать это, чтобы добраться до:
"tags": [
"one <em>hit</em> tag",
"two foo tag",
"three <em>hit</em> tag",
"four foo tag"
]