我试着在脚本评分函数中使用余弦相似性。当我试图测量相似性的文档中缺少稠密向量场时,查询就会中断。
我花了很多时间搜索如何检查该字段是否存在于文档中,但没有成功。
我试过:
正在检查文档['field\u name']==null
正在与doc['field\u name']检查。size()==0
正在与doc['field\u name']检查。值==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 []"
}
}
有人能帮帮我吗
1条答案
按热度按时间rnmwe5a21#
你也可以打电话
doc.containsKey('dense_vector_field')
返回一个布尔值。另一方面,你为什么要访问
params.queryVector
当你的参数中唯一的键是qv
?