如何在文本字段上ElasticSearch查询中执行基于余弦相似度的语义搜索?

ryhaxcpt  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(224)

我正在执行一个匹配的文本字段(技能)。我不想一个完全匹配,相反,我想余弦相似性为基础的搜索字段。

GET 2/_search
{
  "_source": ["Skills"], 
  "query": {
    "function_score": {
      "query": {
        "match": {
          "Job_Group": "sales"
        }
      },
      "functions": [

        {
          "filter": {
            "match":{
              "Skills":"Designation"
            }
          },
          "weight": 15
        }
      ]
    }
    }
}

上面的查询是为了精确匹配。我如何包括一些语义搜索(基于技能字段查询中的余弦相似性)。技能字段是自由文本字段,所以我希望匹配也基于它们的语义含义发生。例如---技能-交流和交谈应该反映一些相似性并提高分数。

ukdjmx9f

ukdjmx9f1#

很简单- Elastic Package 了Lucene,Lucene有More-Like-This实现了TF-IDF(更准确地说是BM 25)和一些额外的智慧。试试看,它会给你很好的相似性结果。Explanation可以在这个链接和其他链接中找到。

相关问题