gpt4 book ai didi

ElasticSearch:用匹配的搜索词标记文档

转载 作者:行者123 更新时间:2023-12-02 23:00:23 24 4
gpt4 key购买 nike

我正在使用 elasticsearch 1.7,我需要一种方法来标记文档与它们匹配的 query_string 查询的哪一部分。

我一直在尝试突出显示,但发现在某些情况下它会变得有点困惑。我希望用匹配的搜索词标记文档。

这是我正在使用的查询:(注意这是一个 ruby​​ 哈希,稍后会被编码为 JSON)

{
query: {
query_string: {
fields: ["title^10", "keywords^4", "content"],
query: query_string,
use_dis_max: false
}
},
size: 20,
from: 0,
sort: [
{ pub_date: { order: :desc }},
{ _score: { order: :desc }}
]
}

query_string 变量基于用户关注的主题,可能看起来像这样:"(the AND walking AND dead) OR (iphone) OR (video AND games)"

有没有我可以使用的选项,以便返回的文档具有匹配搜索词的属性,例如 the walking dead(the AND walking AND dead)

最佳答案

如果您准备好切换到使用 bool/should 查询,您可以拆分每个字段的匹配并使用 named queries ,然后在结果中您将获得匹配的查询的名称。

它基本上是这样的:在 bool/should 查询中,您为每个字段添加一个 query_string 查询并命名查询以识别该字段(例如 title_query 用于 title 字段等)

{
"query": {
"bool": {
"should": [
{
"query_string": {
"fields": [
"title^10"
],
"query": "query_string",
"use_dis_max": false,
"_name": "title_query"
}
},
{
"query_string": {
"fields": [
"keywords^4"
],
"query": "query_string",
"use_dis_max": false,
"_name": "keywords_query"
}
},
{
"query_string": {
"fields": [
"content"
],
"query": "query_string",
"use_dis_max": false,
"_name": "content_query"
}
}
]
}
}
}

在结果中,您将在 _source 下方找到另一个名为 matched_queries 的数组,其中包含与返回文档匹配的查询的名称。

"_source": {
...
},
"matched_queries": [
"title_query"
],

关于ElasticSearch:用匹配的搜索词标记文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35836381/

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