一尘不染

elasticsearch tf-idf并忽略搜索中的字段长度范数

elasticsearch

我想在elasticsearch中执行搜索,而忽略tf-
idf搜索中的字段范数。您可以通过设置索引映射忽略字段规范来完成此操作。但是,这似乎是通过更改索引来完成的,我只想修改搜索(我需要其他类型搜索的规范)。做到这一点的最佳方法是什么?我正在使用elasticsearch.js作为Elasticsearch的接口。


阅读 328

收藏
2020-06-22

共1个答案

一尘不染

您不能基于每个搜索禁用规范,但是可以使用Multi Fields
API
在禁用规范的情况下添加其他字段。

PUT /my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "my_field": {
          "type": "string",
          "fields": {
            "no_norms": { 
              "type":  "string",
              "norms": {
                "enabled": false
              }
            }
          }
        }
      }
    }
  }
}

现在,您可以搜索my_field是否需要规范,是否需要规范my_field.no_norms。您必须重新索引数据,以便新字段可用于所有文档,只是将其添加到映射中不会更改退出文档的任何内容。

2020-06-22