【发布时间】:2022-09-27 14:19:20
【问题描述】:
我创建了一个索引如下
PUT /ngram_tokenizer
{
\"mappings\": {
\"properties\": {
\"test_name\": {
\"type\": \"text\",
\"analyzer\": \"my_analyzer\"
}
}
},
\"settings\": {
\"index\": {
\"max_ngram_diff\": 20
},
\"analysis\": {
\"tokenizer\": {
\"my_tokenizer\": {
\"type\": \"ngram\",
\"min_gram\": 2,
\"max_gram\": 20,
\"token_chars\":[
\"letter\",
\"digit\",
\"whitespace\",
\"symbol\"
]
}
},
\"analyzer\": {
\"my_analyzer\": {
\"tokenizer\": \"my_tokenizer\"
}
}
}
}
}
然后索引如下
POST /ngram_tokenizer/_doc
{
\"test_name\": \"test document\"
}
POST /ngram_tokenizer/_doc
{
\"test_name\": \"another document\"
}
然后我做了一个 match_phrase 查询,
GET /ngram_tokenizer/_search
{
\"query\": {
\"match_phrase\": {
\"test_name\": \"document\"
}
}
}
上面的查询按预期返回两个文档,但下面的查询没有返回任何文档
GET /ngram_tokenizer/_search
{
\"query\": {
\"match_phrase\": {
\"test_name\": \"test\"
}
}
}
另外,我通过以下查询检查了它生成的所有令牌
POST ngram_tokenizer/_analyze
{
\"analyzer\": \"my_analyzer\",
\"text\": \"test document\"
}
匹配查询工作正常,你能帮我吗
标签: elasticsearch