一尘不染

Elastic search突出显示fragment_size的奇怪行为

elasticsearch

TL; DR:我不了解突出显示的工作方式,更确切地说是如何fragment_size影响突出显示的。


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

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

然后,我插入以下文档:

{
    "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."
}

最后,我要查询“ layer-syrup”并突出显示结果,并使用不同的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
            }
        }
    }
}

一些结果:

  • 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荧光笔,结果相同

谢谢!


阅读 2145

收藏
2020-06-22

共1个答案

一尘不染

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

2020-06-22