Подтвердить что ты не робот

Любопытное поведение 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."
}

Наконец, я запрашиваю "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
            }
        }
    }
}

Некоторые результаты:

  • 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 мы иногда имеем один фрагмент, иногда два

Я также попробовал выделения postings и fast vector с теми же результатами

Спасибо!

4b9b3361