弹性搜索突出显示中fragment_size的奇怪行为

Sch*_*ron 12 highlighting elasticsearch

TL; DR:我不明白突出显示是如何工作的,更准确地说是如何fragment_size影响突出显示.


在新的ES安装(1.4.2)上,我正在使用以下设置创建索引:

{
    "mappings" : {
        "test": {
            "properties": {
                "content" : {
                    "type" : "string",
                    "analyzer" : "french"
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,我插入以下文件:

{
    "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."
}
Run Code Online (Sandbox Code Playgroud)

最后,我正在查询"couche-sirop"并使用不同的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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一些结果:

  • 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>']

具有更大的N值

  • 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>']

谁能解释原因:

  • 随着N值的增加,我们希望有更多的背景,但有时我们会有更少的背景.
  • 根据N的值,我们有时会有一个片段,有时是两个片段

我也尝试过postingsfast vector荧光笔一样的结果

谢谢 !

Sch*_*ron 1

我怀疑这是一个错误。我在 github 上打开了一个问题:https ://github.com/elasticsearch/elasticsearch/issues/9442