gpt4 book ai didi

elasticsearch - ElasticSearch:如果文档中存在字段,则在script_score函数内执行余弦相似度

转载 作者:行者123 更新时间:2023-12-03 01:10:12 24 4
gpt4 key购买 nike

我正在尝试在script_score函数中使用余弦相似度。当我要据以测量相似性的文档中缺少密集 vector 字段时,查询中断。
我花了很多时间搜索如何检查该字段是否存在于文档中,但无法成功。
我试过了:

  • 使用doc ['field_name'] ==空
  • 检查
    使用doc ['field_name']。size()== 0 进行
  • 检查
    使用doc ['field_name']。value == null的
  • 检查

  • 我正在使用的查询是
    POST /sidx-4111c0fc-a8ba-523c-9851-34a2b803643b/_search/
    {
    "query": {
    "function_score": {
    "query": {
    "bool": {
    "must": {
    "multi_match": {
    "query": "nri customer bank loan",
    "fields": [],
    "fuzziness": "AUTO"
    }
    }
    }
    },
    "functions": [
    {
    "script_score": {
    "script": {
    "source": "double score =0; score = doc['dense_vector_field'] == null ?0: cosineSimilarity(params.qv, 'dense_vector_field'); if(score>=0.8 && score<=1.0){return 10000+score;} else if(score>=0.60 && score<0.80){return score+1000;} else{return score+100}",
    "params": {
    "qv": [1,1,0,1]
    }
    }
    }
    }
    ],
    "boost_mode": "sum"
    }
    }
    }

    我收到以下错误
      "caused_by" : {
    "type" : "illegal_argument_exception",
    "reason" : "No field found for [dense_vector_field] in mapping with types []"
    }
    }
    有人可以帮帮我吗

    最佳答案

    您还可以调用doc.containsKey('dense_vector_field'),它返回一个 bool(boolean) 值。
    在相关说明中,当参数中唯一的键是params.queryVector时,为什么还要访问qv

    关于elasticsearch - ElasticSearch:如果文档中存在字段,则在script_score函数内执行余弦相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64482837/

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