使用分析器建立索引建议

时间:2018-07-17 10:30:32

标签: elasticsearch nest

美好的一天:

我试图弄清楚如何在不使用定界符分割文本并将其存储到CompletionField的情况下为建议建立索引:

 List<string> inputs = new List<string>() {
                facility.City,
                facility.State,
                facility.ZipCode
            };
            inputs.AddRange(facility.Name.Split(' '));
            inputs.AddRange(facility.Address.Split(' '));
            inputs.AddRange(facilityType.Description.Split(' '));
            var completionField = new CompletionField()
            {
                Input = inputs.AsEnumerable<string>()
            };
            return completionField;

这不是执行此操作的最佳方法,因为,我宁愿让分析器处理此操作,然后再对其进行索引。有没有一种方法可以将整个文本发送给Elastic,并让Elastic分析文本并将其存储在完成索引或其他内容的字段中?

已更新

我有我的代码可以对整个文本进行索引并使用默认的分析器,但是,这就是索引,分析器没有将文本分解

"suggest": {
            "input": [
              "Reston",
              "Virginia",
              "20190",
              "Facility 123456",
              "22100 Sunset Hills Rd suite 150*"
            ]
          },

我的代码:

 List<string> inputs = new List<string>() {
                facility.City,
                facility.State,
                facility.ZipCode
            };
            inputs.Add(facility.Name);
            inputs.Add(facility.Address);
            if (facility.Description != null && facility.Description != "")
            {
                inputs.Add(facility.Description);
            }
            var completionField = new CompletionField()
            {
                Input = inputs.AsEnumerable<string>()
            };
            return completionField;

我对该属性的映射:

 "suggest": {
            "type": "completion",
            "analyzer": "simple",
            "preserve_separators": true,
            "preserve_position_increments": true,
            "max_input_length": 50
          },

但是,这并没有破坏我的输入

1 个答案:

答案 0 :(得分:1)

只需发送输入中的所有文本,然后指定一个使用空白标记器的自定义分析器

编辑 首先添加分析仪

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type":      "custom",
          "tokenizer": "whitespace",
          "filter": [
            "lowercase"
          ]
        }
      }
    }
  },
  "mappings": {
    "_doc" : {
        "properties" : {
            "suggest" : {
                "type" : "completion",
                "analyzer": "my_custom_analyzer"
            },
            "title" : {
                "type": "keyword"
            }
        }
    }
}
}

然后在建议字段中指定