This is my elasticsearch query:
GET indexname/_search
{
"fields": ["_id", "url","T"],
"query" : {
"bool": {"should": [
{"simple_query_string": {
"query": "white",
"fields": ["T", "content"]
}}
]}
},
"highlight" : {
"pre_tags": ["<b>"],
"post_tags": ["</b>"],
"fields" : {
"content" : {"fragment_size" : 150, "number_of_fragments" : 1}
}
}
}
My elasticsearch query is searching for white in the fields "T" and "content", and I am highlighting the field "content" and inserting a pre and post tag b(bold). This is the result of my query
"hits": {
"total": 922,
"max_score": 2.369757,
"hits": [
{
"_index": "indexname",
"_type": "Searchtype",
"_id": "http://www.example.com/de/unternehmenssuche-white-paper",
"_score": 2.369757,
"fields": {
"T": [
"White Paper Unternehmenssuche"
],
"url": [
"http://www.example.com/de/unternehmenssuche-white-paper"
]
},
"highlight": {
"content": [
"/Anwendungsbeispiele Ressourcen Blog <b>White</b> Papers in Deutsche Downloads Wiki Unternehmen Vorstellung der Search Executive"
]
}
}
....
...
I want my highlight result to look like this
"highlight": {
"content": [
"<b>...</b> /Anwendungsbeispiele Ressourcen Blog <b>White</b> Papers in Deutsche Downloads Wiki Unternehmen Vorstellung der Search Executive <b>...</b>"
]
}
I want to add <b>...</b>
before and after the highlight content. What should I add in my elasticsearch query to make results look like this? Any help would be appreciated
Highlighters enable you to get highlighted snippets from one or more fields in your search results so you can show users where the query matches are.
Highlighting in Solr allows fragments of documents that match the user's query to be included with the query response.
Elasticsearch is a distributed search and analytics engine built on Apache Lucene. Since its release in 2010, Elasticsearch has quickly become the most popular search engine and is commonly used for log analytics, full-text search, security intelligence, business analytics, and operational intelligence use cases.
As I stated in the comments I don't think this can be done in Elasticsearch. A highlighter just highlights the terms it matched and does no further postprocessing (And I found no evidence in the docs for Elasticsearch 2.3 that you could make it able to do so).
Anyway, my logical approach would be to add the <b>...</b>
tags when you're rendering the HTML code.
{{ foreach hit in hits }}
<b>...</b> hit[content] <b>...</b>
{{ endfor }}
Something like this, just modify it to suit your template.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With