首页 文章

使用分析器 Build 索引建议

提问于
浏览
0

美好的一天:

我试图弄清楚如何索引建议而不使用分隔符拆分我的文本并将其存储在 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分析文本并存储在完成字段中的索引或其他内容?

Updated

我有我的代码来索引整个文本并使用默认的分析器,但这是索引,分析器没有破坏文本

"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 回答

  • 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"
                }
            }
        }
    }
    }
    

    然后在建议字段中指定它

相关问题