我正在按照此示例键入功能时实施搜索: Edge NGram with phrase matching
我觉得查询时间与匹配文档的数量有关,即使我只请求前5个文档。
我的索引有3.2亿个文档。当我的查询是" l" 600万个文档与查询匹配,运行查询需要22毫秒。但是当我的查询是" a" 1.33亿个文档与查询匹配,需要400毫秒。同样,我只要求前5个文件。
请参阅下面的索引定义和查询。
我试图让我的所有查询都少于100毫秒。我该如何实现这一目标?我错过了什么?
这是我的索引定义:
`
PUT /ss
{
"settings": {
"analysis": {
"filter": {
"english_poss_stemmer": {
"type": "stemmer",
"name": "possessive_english"
},
"edge_ngram": {
"type": "edgeNGram",
"min_gram": "1",
"max_gram": "25",
"token_chars": [
"letter",
"digit"
]
}
},
"analyzer": {
"edge_ngram_analyzer": {
"filter": [
"lowercase",
"english_poss_stemmer",
"edge_ngram"
],
"tokenizer": "standard"
},
"my_standard": {
"filter": [
"lowercase",
"english_poss_stemmer"
],
"tokenizer": "standard"
}
}
}
},
"mappings": {
"ss": {
"_all": {
"enabled": false
},
"properties": {
"name": {
"search_analyzer": "my_standard",
"analyzer": "edge_ngram_analyzer",
"type": "text"
},
"type": {
"search_analyzer": "keyword",
"analyzer": "keyword",
"type": "text"
},
"tax_id": {
"search_analyzer": "keyword",
"analyzer": "keyword",
"type": "text"
}
}
}
}
}
`
这是我的问题:
GET /ss/_search
{
"from": 0,
"size": 5,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"match_phrase": {
"name": "a"
}
}
}
}
}
答案 0 :(得分:0)
我在克1中看不到任何要点,我认为将克限制为6是有意义的。
您有:
stDev
更好地拥有:
"min_gram": "1"
"max_gram": "25"