I would like to highlight only ngrams that match, not the whole word. Example:
term: "Wo" highlight should be: "<em>Wo</em>nderfull world!" currently it is: "<em>Wonderfull</em> world!"
Display:
{ "global_search_1495732922733" : { "mappings" : { "meeting" : { "properties" : { ... "name" : { "type" : "text", "analyzer" : "meeteor_index_analyzer", "search_analyzer" : "meeteor_search_term_analyzer" }, ... } } } } }
Analyzers:
"analysis" : { "filter" : { "meeteor_stemmer" : { "name" : "english", "type" : "stemmer" }, "meeteor_ngram" : { "type" : "nGram", "min_gram" : "2", "max_gram" : "15" } }, "analyzer" : { "meeteor_search_term_analyzer" : { "filter" : [ "lowercase", "asciifolding" ], "tokenizer" : "standard" }, "meeteor_index_analyzer" : { "filter" : [ "lowercase", "asciifolding", "meeteor_ngram" ], "tokenizer" : "standard" }, "meeteor_project_id_analyzer" : { "tokenizer" : "standard" } } },
Specific example:
curl -XGET 'localhost:9200/global_search/meeting/_search?pretty' -H 'Content-Type: application/json' -d' { "query": { "match": { "name": "Me" } }, "highlight":{ "fields": { "name": {} } } } '
Result:
"...highlight" : { "name" : [ "Sad <em>Meeting</em>" ] }
Boti source share