gpt4 book ai didi

sorting - elasticsearch:按匹配嵌套文档的值排序

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

我选择嵌套文档来实现多语言书籍搜索,其中文档的根目录中包含通用书籍数据,而嵌套文档中包含版本数据。映射:

{
"book": {
"properties": {
"bookinfo": {
...
},
"editions": {
"type": "nested",
"properties": {
"editionid": {
"type": "long",
"store": "yes",
"index": "no"
},
"title_author": {
"type": "string",
"store": "no",
"index": "analyzed"
},
"title": {
"type": "string",
"store": "yes",
"index": "not_analyzed"
},
"languageid": {
"type": "short",
"store": "yes",
"index": "no"
},
"ratings": {
"type": "integer",
"store": "no"
}
}
}
}
}
}

嵌套文档中包含一本书的不同版本-可以是不同的语言,也可以是不同的出版商,isbn等。有时,甚至标题也与相同语言的版本不同。

搜索文档时(在title_author字段上),我需要了解其他嵌套的doc信息,例如languageid和等级,以根据用户的语言技能和版本的相关性来提高匹配分数。

我没有将每个版本都放在单独的文档中的原因是,我只希望每本书有一个热门(最匹配的一个)。而且ElasticSearch没有UNIQUE功能。我需要分页。因此,每当我在查询里面有双本的书后更改结果集时,ElasticSearch的分页符都会中断。

嵌套排序功能在这里似乎无济于事,因为它可以对一本书的所有嵌套文档进行排序。

如何访问匹配的嵌套文档的信息?

如果无法实现,那么如何通过多重搜索解决呢?

最佳答案

为了访问嵌套文档字段,您可以使用:

doc['editions. languageid'].value

对于增强部分,请尝试以下一些示例:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html

那是您要找的东西吗?

关于sorting - elasticsearch:按匹配嵌套文档的值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22838450/

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