gpt4 book ai didi

search - 在映射中,字段_all指定了index_analyzer时无结果

转载 作者:行者123 更新时间:2023-12-03 00:21:53 25 4
gpt4 key购买 nike

使用Elasticsearch,我已经使用自定义映射和自定义分析器集创建了索引,但是我无法在_all字段上进行查询搜索。

我正在使用这些分析仪:

{
"analysis": {
"analyzer": {
"case_insensitive": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase",
"asciifolding"
],
"char_filter": "punctuation"
}
},
"char_filter": {
"punctuation": {
"type": "mapping",
"mappings": [
".=>\\u0020",
"-=>\\u0020",
"_=>\\u0020"
]
}
}
}
}

和这个映射:
{
"article": {
"_all": {
"enabled": true,
"store": "yes",
"index_analyzer": "case_insensitive",
"search_analyzer": "case_insensitive"
},
"properties": {
"title": {
"type": "string",
"index": "analyzed"
},
"subtitle": {
"type": "string",
"analyzer": "case_insensitive"
},
"comment": {
"type": "string",
"index": "not_analyzed"
},
"review": {
"type":"string",
"index": "not_analyzed",
"include_in_all":false
}
}
}

}

然后我添加一个像这样的文档:
{
"title": "This is the story of a wonderful man.",
"subtitle":"A man goes on vacation in the worst place possible.",
"comment": "I like the movie very much, however I did not undertand it.",
"review":"Very well"
}

我希望_all包括以下4个字段中的3个,特别是标题,副标题和注释。

分析仪的工作方式如下(使用elasticsearch中的分析仪测试进行了测试):

“我非常喜欢这部电影,但是我没有理解它。” ->“我非常喜欢这部电影,但是我并没有理解它”

“这是一个好男人的故事。” ->“这是一个好人的故事”

我希望至少使用查询查询_all:“这是一个了不起的男人的故事。”我应该能够找到该文件。

我究竟做错了什么?

elasticsearch如何填充_all字段?

如果将“标题”字段添加到_all字段,则使用哪些数据以及如何使用?是使用为“标题”字段选择的分析器的输出作为_all分析器的输入,还是使用原始数据?

_all字段中的数据流如何?例如

输入->分析器->标题-> index_analyser-> _all

要么

输入->分析器->标题
-> index_analyser-> _all

先感谢您...

最佳答案

您的映射对我来说还不错。我唯一想做的就是将其中一个字段显式设置为include_in_all=true,然后重新运行查询。

根据文档,可能是因为您正在覆盖其中一个字段的include_in_all的默认值,所以它可能已更改了对象的所有其他字段的默认值。看到这里_all

文档中的相关文本如下:

Inclusion in the _all field can be controlled on a field-by-field basis by using the include_in_all setting, which defaults to true. Setting include_in_all on an object (or on the root object) changes the default for all fields within that object.



更新:

我想我知道为什么它不起作用。这是我所做的。首先,我从 _all_字段中删除了自定义分析器(因此使用了标准分析器)。这样我就可以查询并获得预期的结果。对于任何文档属性中的术语返回结果,但 评论。至少这证实了 _all的一般行为是正确的。接下来要测试分析器,我对 字幕字段进行了查询,查询的文本准确(因为它使用的是关键字分析器)。这也起作用。然后我意识到 _all是一个聚合字段,然后先分析 然后分析

因此,查询应包括所有字段中的所有文本才能使用。但是同样,我们如何知道它们的聚集顺序:)

该链接 _all custom analyser具有一些信息。下面提取了相关位(来自Shay)。

You don't want to set the analyzer for _all to be keyword, _all is an aggregation of all the other fields int the doc, so you basically treat the whole aggregation of text as a single token.

关于search - 在映射中,字段_all指定了index_analyzer时无结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30167450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com