0

我想使用像弹性搜索这样的搜索引擎来搜索不同的数据属性(例如标题、正文、用户 ID),我想对标题和正文等自由文本字段使用密集向量。对于用户 ID 和其他属性,应该可以精确匹配或者也可以是单数/复数,例如类别。我想对每个属性进行不同的加权。

此外,是否存在其他度量相似度的方法,即余弦相似度或L1、L2,如word mover's distance (WMD) 存在的问题。我怎样才能做到这一点?

如果可以用 solr 或 lucene 解决我的要求,我也愿意。

对于弹性搜索,到目前为止我使用了以下查询,每个属性的评分效果很好,但是 multi_match 确保数据在我的词向量被使用之前就已经被过滤了。"match_all": {}然后考虑词向量,但是缺少其他属性的评分。

{
     "size": SEARCH_SIZE,
     "query": {
        "script_score": {
           "query": {
              "multi_match": {
                 "query": query,
                 "fields": ["user^1000", "category^100", "*"]
              }
           },
           "script": {
               "source": "(cosineSimilarity(params.query_vector, 'title_vector') + 1.0) * params.score_title + (cosineSimilarity(params.query_vector, 'body_vector') + 1.0) * params.score_body + _score",
               "params": {"query_vector": query_vector, "score_title": 100, "score_body": 10}
           }
        }
     },
     "_source": {"includes": ["title", "body"]}
}

资源:

4

0 回答 0