如何在查询时将参数传递给相似性脚本函数



在对匹配中,公式 2*匹配的对数/对的并集*100

例如:Santhoshi 在弹性索引文档值中,Santhosh 在查询中是 searchin 元素,然后 santhoshi 中的对数 = 8,匹配的对数否 = 7,桑索什中的配对数 = 7

result = 2*7/(7_8)*100 = 93%......

我尝试了以下代码,其中提交的.sumDocFreq是"类型":

illegal_argument_exception,"原因":"变量 [字段] 未定义。

法典:

{ "query": {
        "function_score": {
             "query": {
              "match": {
                "Name":"santhosh"
              }
            },
             "min_score":100,
            "functions": [
                {
                    "script_score": {
                         "script": {
                        "params" : {
                            "inputpairlength": 6 },
                        "source": "double tf = doc.freq; double ttf = field.sumDocFreq;  return (2* tf /(params.inputpairlength + ttf)) * 100;"
                         }
                    }
                }
            ]
        }
    }
}
 "settings": {
      "similarity": {
      "scripted_tfidf": {
        "type": "scripted",
        "script": {
          "source": "double tf = doc.freq; double ttf = field.sumDocFreq;  return  tf / (params.inputpairlength+ttf) * 100;"
        }
      }
    },

获取参数输入未定义

我需要传递参数并使用它计算分数

double tf = doc.freq; 
double ttf = field.sumDocFreq;  
return  tf / (params.inputpairlength+ttf) * 100

这是访问字段统计信息的错误方式。访问字段统计信息 -

_index['FIELD'].docCount((

您可以在此处阅读有关它的更多信息 - 弹性指南

最新更新