本文介绍了在弹性搜索中强调fragment_size的好奇行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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


$ b $在新的ES安装(1.4.2)中,我创建一个具有以下设置的索引:



pre> {
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 avezsirotéau tour d'avant,çatourne dans votre感觉,soit vous laissez filer,vous dites file-sirop,soit vous vous sentez de relancer et vous annoncez un sirop de quatorze。Vous,comme on acommencé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,çadépenddesrégions。 Etaprès,soit on fait la partie soit je fais un contre-sirop,boum!
}
}

最后,我查询couche-sirop并突出显示结果,使用不同的N值( fragment_size ):

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

某些结果




  • N = 15: ['< em> couche< / em>',' - < em> sirop< / em> N = 16: ['et vous dites< em> couche< / em>', - < EM> sirop< / EM取代。 N = 17: ['< em> couche< / em> - < em> sirop< / em>']

  • N = 18: ['et vous dites< em> couche< / em> - < EM> sirop< / EM取代。 u si''] gt gt gt gt gt gt gt gt gt gt N N gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt ; sirop< / em>']



/ p>


  • N = 70: ['et vous dites< em> couche< / em> - < em& sirop< / EM取代。 Ou sirop Jeannot,çadépenddesrégions。 Et he';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; / EM取代。 Ou sirop Jeannot,çadépenddesrégions。 Et s']] ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous ous dite< em> couche< / em>',' - < em> sirop< / em> ;. Ou sirop Jeannot,çadépenddesrégions。 Etès''']]]] tour tour>>>>>>>>>>>>>>>>>> tour tour tour tour tour tour tour tour tour tour tour tour tour tour tour tour tour tour tour tour tour tour < em> couche< em> sirop< / em>']



任何人都可以解释为什么:




  • 有了更大的N值,我们期望有更多的上下文,但
    有时我们有更少的。

  • 根据N的值,我们有时会有一个片段,有时候有两个片段,有时两个



我也尝试了发布快速向量荧光笔,结果相同



谢谢!

解决方案

我怀疑这是一个错误。我在github上发布了一个问题:


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, butsometimes 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 !

解决方案

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

这篇关于在弹性搜索中强调fragment_size的好奇行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 06:41