当前位置: 首页 > 面试题库 >

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

祁修平
2023-03-14
问题内容

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

谢谢!


问题答案:

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



 类似资料:
  • 问题内容: 所以我有这个索引 我正在通过轮胎宝石进行搜索 并且我有两个应该匹配的帖子,分别名为“ xyz post”和“ xyz问题”。执行此搜索时,我正确地获得了突出显示的字段 现在这就是事情……一旦我在索引和重新索引中将min_gram更改为1。突出显示的字段开始像这样返回 我根本不明白为什么。 问题答案: 简短答案 您需要检查 映射 并查看是否使用。但是,您仍然需要非常小心自己的查询。 详细

  • 根据文献记载 must_not子句(query)不能出现在匹配的文档中。 我有如下查询: 在我的elasticsearch存储库中有两个URI 1) 编辑这里是我的映射

  • 问题内容: 我已经使用Nest成功地获得了结果和突出显示,但是如果我在其中搜索突出显示的两个字段中都仅使用了Elasticsearch查询的最后一个字段。例如以下 表示我只能从“摘要”字段中获得突出显示。如果我直接使用等效查询查询elasticsearch,则可以从两个字段中检索突出显示。例如 Nest有可能做到这一点吗?难道我做错了什么? 问题答案: 每个突出显示的字段都需要一个单独的“ .On

  • 我正在使用OpenGL在lwjgl 3中创建一个新的2d游戏引擎来试用lwjgl 3,因为这是我在所有其他项目中使用lwjgl 3的第一个项目。但是当我使用该新引擎渲染图像时,所有颜色都会改变,有些甚至不会显示。 用于加载纹理的代码 如果你知道我如何防止这种情况发生,请告诉我。

  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方

  • 本文向大家介绍HTML 突出显示,包括了HTML 突出显示的使用技巧和注意事项,需要的朋友参考一下 示例 该<mark>元素是HTML5中的新元素,用于“由于其在另一个上下文中的相关性”而标记或突出显示文档中的文本。1 最常见的示例是用户输入搜索查询并显示结果以突出显示所需查询的搜索结果。 输出: 常见的标准格式是黄色背景上的黑色文本,但是可以使用CSS进行更改。