我的索引是2-4个字符,没有空格,但是用户经常搜索“我没有索引”的“完整术语”,但是在空格后有3个额外的字符。例如:我索引“ A1”或“ A1B”或“ A1B2”,“完整术语”类似于“ A1 11A”或“ A1B ABA”或“ A1B2 2C8”。
这是当前映射:
"code": {
"type": "text"
},
如果他搜索“ A1”,则会带入所有它们都是正确的,如果他键入“ A1B”,我只带最后两个,如果他搜索“ A1B2 2C8”,我只带最后一个。
那可能吗?如果是这样,最好的搜索/索引策略是什么?
索引映射:
{
"settings": {
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"autocomplete_filter"
]
}
}
}
},
"mappings": {
"properties": {
"code": {
"type": "text",
"analyzer": "autocomplete",
"search_analyzer": "standard"
}
}
}
}
索引数据:
{
"code": "A1"
}
{
"code": "A1B"
}
{
"code": "A1B2"
}
搜索查询:
{
"query": {
"match": {
"code": {
"query": "A1B2 2C8"
}
}
}
}
搜索结果:
"hits": [
{
"_index": "65067196",
"_type": "_doc",
"_id": "3",
"_score": 1.3486402,
"_source": {
"code": "A1B2"
}
}
]
如果不存在空格,例如“ A1B22C8”,“ A111A”,“ A1BABA”,您将如何做才能找到查询词的结果。答案有一个简单的调整吗?还是会有很大不同?如果只是调整,我可以编辑问题