Curious behaviour of fragment_size in elasticsearch highlighting

為{幸葍}努か 提交于 2019-12-21 03:42:45

问题


TL;DR : I don't understand how highlighting is working, and more precisely how fragment_size influences the highlighting.


On a new ES installation (1.4.2), I'm creating an index with the following settings :

{
    "mappings" : {
        "test": {
            "properties": {
                "content" : {
                    "type" : "string",
                    "analyzer" : "french"
                }
            }
        }
    }
}

Then, I'm inserting the following document :

{
    "content": "Bon alors mettons que j'ouvre avec un sirop de huit. Si c'est vous qui avez siroté au tour d'avant, ça tourne dans votre sens. Soit vous laissez filer, vous dites file-sirop, soit vous vous sentez de relancer et vous annoncez un sirop de quatorze. Vous, comme on a commencé les annonces, vous avez pas le droit de laisser filer. Vous pouvez soit relancer un sirop de vingt-et-un, soit vous abandonnez le tour et vous dites couche-sirop. Ou sirop Jeannot, ça dépend des régions. Et après, soit on fait la partie soit je fais un contre-sirop, boum ! Et à partir de là, sirop de pomme sur vingt-et-un donc on fait la partie en quatre tours jusqu'à qu'il y en ait un qui sirote."
}

Finally, I'm querying "couche-sirop" and highlighting the result, with different values of N (fragment_size):

{
    "query": {
        "query_string": {
            "query": "\"couche-sirop\"",
            "fields": [
                "content"
            ],
            "default_operator": "and"
        }
    },
    "highlight": {
        "number_of_fragments": 5,
        "type": "plain",
        "fields": {
            "content": {
                "fragment_size": N
            }
        }
    }
}

Some results:

  • N=15: [' <em>couche</em>', '-<em>sirop</em>. Ou sirop']
  • N=16: [' et vous dites <em>couche</em>', '-<em>sirop</em>. Ou sirop']
  • N=17: [' <em>couche</em>-<em>sirop</em>']
  • N=18: [' et vous dites <em>couche</em>', '-<em>sirop</em>. Ou sirop']
  • N=19: [' et vous dites <em>couche</em>-<em>sirop</em>']

With greater N values

  • N=70: [' et vous dites <em>couche</em>-<em>sirop</em>. Ou sirop Jeannot, ça dépend des régions. Et après']
  • N=71: [' <em>couche</em>-<em>sirop</em>. Ou sirop Jeannot, ça dépend des régions. Et après']
  • N=72: [' un sirop de vingt-et-un, soit vous abandonnez le tour et vous dites <em>couche</em>', '-<em>sirop</em>. Ou sirop Jeannot, ça dépend des régions. Et après, soit on fait']
  • N=73: [' de vingt-et-un, soit vous abandonnez le tour et vous dites <em>couche</em>-<em>sirop</em>']

Can anyone explain why :

  • With greater values of N, we expect to have more context, but sometimes we have less.
  • Depending on the value of N, we sometimes have one fragment, sometimes two

I also tried the postings and the fast vector highlighters with the same results

Thanks !


回答1:


I suspect this is a bug. I opened an issue on github : https://github.com/elasticsearch/elasticsearch/issues/9442



来源:https://stackoverflow.com/questions/28167990/curious-behaviour-of-fragment-size-in-elasticsearch-highlighting

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!