gpt4 book ai didi

elasticsearch - 按相同顺序分析和匹配所有术语

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

我想要实现的目标:

文档:“一二三四”

搜索字符串:

  • “一四”(必须匹配)
  • “四个一”(不能匹配)

到目前为止我学到了什么:

为了计算订单,应该使用 span_near 查询,但这假设客户已经分析了条款(所有条款必须单独提供)。

要分析搜索字符串,应使用 phrase_match 查询,但它不考虑顺序。

很可能应该使用脚本(感谢@ChintanShah25),但似乎无法分析脚本中的输入字符串。

如何同时实现分析和订单需求?

最佳答案

没有直接的方法来实现这一点,您可以通过使用 _analyze 端点和 span query 或使用 script匹配短语

1) 您将搜索字符串传递给 _analyze

curl -XGET 'localhost:9200/_analyze' -d '
{
"analyzer" : "my_custom_analyzer",
"text" : "one four"
}'

你会得到这样的东西

{
"tokens": [
{
"token": "one",
"start_offset": 0,
"end_offset": 3,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "four",
"start_offset": 4,
"end_offset": 8,
"type": "<ALPHANUM>",
"position": 2
}
]
}

然后您将 token 传递给 span query

{
"span_near" : {
"clauses" : [
{ "span_term" : { "field" : "token1" } },
{ "span_term" : { "field" : "token2" } }
],
"slop" : 2,
"in_order" : true,
"collect_payloads" : false
}
}

2) 另一种方法是使用 advanced scripting ,看看@Andrei Stefan 对 this question 的回答,他使用 _POSITIONSmatch_phrase 来按顺序返回结果。

希望这对您有所帮助!

关于elasticsearch - 按相同顺序分析和匹配所有术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34452808/

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