首页 > 解决方案 > 应用ngrm分析器时需要文本的原始长度

问题描述

当二元语法分析器应用于名称字段并且我检查doc[Name].value.length()它返回 2,但我想要名称的原始长度。示例Infotech = 8需要返回 8

"mappings": {
        "Data": {
            "properties": {
                "Name": {
                    "type":     "text",
                    "analyzer": "bigrams" ,
                    "similarity": "scripted_tfidf",
                     "fielddata": true,
                     "fields": {
                           "length": { 
                              "type":     "token_count",
                               "analyzer": "standard"
                                 }
                     }
                },

标签: elasticsearch

解决方案


您必须在映射中添加关键字类型的字段,因为它不会像这样分析:

            "fields": {

                   "keyword": { 

                          "type":"keyword"

                    }
            }

然后您可以使用以下方法获得实际长度:

             doc['Name.keyword'].value.length()

推荐阅读