gpt4 book ai didi

具有多个上下文的 ElasticSearch 5.x 上下文建议器

转载 作者:行者123 更新时间:2023-11-29 02:50:25 25 4
gpt4 key购买 nike

我想使用 context suggester来自 elasticSearch,但我的建议结果需要匹配 2 个上下文值。

扩展文档中的示例,我想做类似的事情:

POST place/_search?pretty
{
"suggest": {
"place_suggestion" : {
"prefix" : "tim",
"completion" : {
"field" : "suggest",
"size": 10,
"contexts": {
"place_type": [ "cafe", "restaurants" ],
"rating": ["good"]
}
}
}
}
}

我希望结果的 place_type 上下文为“咖啡馆”或“餐厅”,评级上下文为“好”。

当我尝试这样的事情时,elastic 会对上下文执行 OR 操作,为我提供上下文“cafe”、restaurant”或“good”的所有建议。

我能以某种方式指定 elastic 需要使用什么 BOOL 运算符来组合多个上下文吗?

最佳答案

从 Elasticsearch 5.x 开始似乎不支持此功能: https://github.com/elastic/elasticsearch/issues/21291#issuecomment-375690371

最好的办法是创建一个复合上下文,这似乎是 Elasticsearch 2.x 在查询中实现多个上下文的方式: https://github.com/elastic/elasticsearch/pull/26407#issuecomment-326771608

为此,我想您需要在映射中添加一个新字段。我们称它为 cat-rating:

PUT place
{
"mappings": {
"properties": {
"suggest": {
"type": "completion",
"contexts": [
{
"name": "place_type-rating",
"type": "category",
"path": "cat-rating"
}
]
}
}
}
}

当您索引新文档时,您需要将字段 place_typerating 连接在一起,用 - 分隔,对于 cat-rating 字段。一旦完成,您的查询将需要看起来像这样:

POST place/_search?pretty
{
"suggest": {
"place_suggestion": {
"prefix": "tim",
"completion": {
"field": "suggest",
"size": 10,
"contexts": {
"place_type-rating": [
{
"context": "cafe-good"
},
{
"context": "restaurant-good"
}
]
}
}
}
}
}

这将返回好咖啡馆或好餐馆的建议。

关于具有多个上下文的 ElasticSearch 5.x 上下文建议器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46365228/

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