Выделите один символ

Привет в Elastic Search 6.1.3 У меня проблема с выделением одного символа - он отлично работает из 2 символов. Это мой индекс:

{
"users": {
    "aliases": {

    },
    "mappings": {
        "userview": {
            "properties": {
                "FullName": {
                    "type": "text",
                    "fields": {
                        "highlight": {
                            "type": "text",
                            "boost": 2.0,
                            "analyzer": "highlight"
                        }
                    },
                    "analyzer": "highlight"
                }
            }
        }
    },
    "settings": {
        "index": {
            "number_of_shards": "5",
            "provided_name": "users",
            "max_result_window": "30000",
            "creation_date": "1521794188335",
            "analysis": {
                "analyzer": {
                    "highlight": {
                        "filter": ["lowercase",
                        "standard"],
                        "char_filter": ["specialCharsFilter"],
                        "type": "custom",
                        "tokenizer": "highlight"
                    }
                },
                "char_filter": {
                    "specialCharsFilter": {
                        "type": "mapping",
                        "mappings": ["& => \\u0020",
                        "- => \\u0020",
                        ". => \\u0020"]
                    }
                },
                "tokenizer": {
                    "highlight": {
                        "token_chars": ["digit",
                        "letter",
                        "punctuation",
                        "symbol"],
                        "min_gram": "1",
                        "type": "edge_ngram",
                        "max_gram": "30"
                    }
                }
            },
            "number_of_replicas": "1",
            "uuid": "oPaiUU5yQoWhD5_CNvVl4A",
            "version": {
                "created": "6010399"
            }
        }
    }
}}

и сам запрос:

GET /users/_search
{
"_source": "FullName.highlight",
"from": 0,
"size": 10,
"sort": [{
    "NameSupplier.keyword": {
        "order": "asc"
    }
}],
"highlight": {
    "pre_tags": ["["],
    "post_tags": ["]"],
    "fields": {
        "FullName.highlight": {
            "type": "plain",
            "require_field_match": false
        }
    }
},
"query": {
    "bool": {
        "must": [{
            "match_phrase_prefix": {
                "FullName.highlight": {
                    "query": "c"
                }
            }
        }]
    }
}
}

это дает мне результат:

"highlight": {
      "FullName.highlight": [
        "Something [Cola]"
      ]
    }

поэтому он будет соответствовать полному слову Cola вместо [c], но когда я запрашиваю:

        "match_phrase_prefix": {
            "FullName.highlight": {
                "query": "co"
            }
        }

результаты верны - Something [Co]la. Я не уверен, что я сделал не так, когда я пытаюсь проанализировать это поле, используя /_analyze и слово Cola, это дает мне также один "c" в качестве одного из ответов. Может быть, у кого-то была такая же проблема и знаете, как ее исправить?

0 ответов

Другие вопросы по тегам