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

use*_*643 3 elasticsearch

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

knu*_*ker 6

您不能基于每个搜索禁用规范,但您可以使用多字段API添加禁用规范的其他字段.

PUT /my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "my_field": {
          "type": "string",
          "fields": {
            "no_norms": { 
              "type":  "string",
              "norms": {
                "enabled": false
              }
            }
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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