Multiple pre & post tags in highlighter query

Hi
I want to highlight individual query string's match result with different pre & post tags.

  • Create Index
PUT multilang_index
{
  "mappings": {
    "dynamic_templates": [
			{
				"stripped_section_template": {
					"path_match": "STRIPPED_SECTION.*",
					"mapping": {
						"search_analyzer": "index_analyzer",
						"analyzer": "index_analyzer",
						"type": "text",
						"term_vector": "with_positions_offsets"
					}
				}
			}
		]
  },
  "settings": {
		"analysis": {
			"analyzer": {
				"index_analyzer": {
					"filter": [
						"lowercase"
					],
					"tokenizer": "standard"
				}
			}
		}
	}
}
  • Index document
POST multilang_index/_doc/1
{
  "STRIPPED_SECTION": {
    "description": "failure of heart and increase in blood pressure needs to be examined",
    "id": 1
  }
}
  • Perform search query
POST multilang_index/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "multi_match": {
            "fuzziness": "AUTO", 
            "query": "blood pressure",
            "fields": [
              "STRIPPED_SECTION.*"
            ]
          }
        },
        {
          "multi_match": {
            "fuzziness": "AUTO", 
            "query": "heart failure",
            "fields": [
              "STRIPPED_SECTION.*"
            ]
          }
        },
        {
          "multi_match": {
            "fuzziness": "AUTO", 
            "query": "examine",
            "fields": [
              "STRIPPED_SECTION.*"
            ]
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
  "highlight": {
    "fields": {
      "STRIPPED_SECTION.*": {
        "type": "fvh",
        "pre_tags": [
          "<em1>",
          "<em2>",
          "<em3>"
        ],
        "post_tags": [
          "</em1>",
          "</em2>",
          "</em3>"
        ]
      }
    }
  }
}
  • ACTUAL Output
"highlight" : {
          "STRIPPED_SECTION.description" : [
            "<em1>failure</em1> of <em3>heart</em3> and increase in <em1>blood</em1> <em2>pressure</em2> needs to be <em2>examined</em2>"
          ]
}

In ACTUAL Output, random tags assigned to highlighted keywords.

  • EXPECTED Output
"highlight" : {
          "STRIPPED_SECTION.description" : [
            "<em2>failure</em2> of <em2>heart</em2> and increase in <em1>blood</em1> <em1>pressure</em1> needs to be <em3>examined</em3>"
          ]
}

I am expecting each matched word from one query string should highlighted with same tag

For Ex :

  • All match result of 'heart failure' query should have same tag like failure, heart
  • All match result of 'blood pressure' query should have same tag like blood, pressure
  • All match result of 'examine' query should have same tag like examined

Is there any way to achieve above mentioned behaviour?

Hi Mayank,
This may be of interest

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.