sách gpt4 ai đã đi

elasticsearch - ElasticSearch 中字符串数组与串联字符串的内部结构

In lại 作者:行者123 更新时间:2023-12-04 08:25:46 32 4
mua khóa gpt4 Nike

我试图更好地理解 ElasticSearch 的内部结构,所以我想知道 ElasticSearch 在内部计算以下两种情况的术语统计信息的方式是否存在任何差异。

第一种情况是当我有这样的文件时:

{
"foo": [
{
"bar": "long string"
},
{
"bar": "another long string"
}
]
}

或者像这样的文档:

{
"foobar": "long string another long string"
}

我的理解是第一个文档被扁平化为:

{
"foo.bar": ["long string", "another long string"]
}

所以看起来问题真的是,第二个和第三个文档索引相同吗?术语统计计算是否相同?

1 Câu trả lời

有趣的问题!如果您索引第一个和第二个文档,然后查看 term vectorsfoo.bar 字段,您会注意到频率和偏移量完全相同,但是位置不同。

term vector differences

原因与 position_increment_gap 有关。设置,其默认值为 100。引入此假间隙的原因是为了防止短语查询跨值匹配。

所以在第一个文档中,foo.bar 字段有多个值,正如您正确注意到的那样,这就是为什么术语位置与只有一个字符串的第二个文档不同的原因。

["long string", "another long string"]

这意味着如果您尝试使用 match_phrase 查询来匹配 string another,那么它不会匹配第一个文档,只会匹配第二个文档。

您仍然可以决定在第一个文档的映射中更改 position_increment_gap 的值并将其设置为 0,在这种情况下,两个文档的索引方式将完全相同。

关于elasticsearch - ElasticSearch 中字符串数组与串联字符串的内部结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65271653/

32 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com