首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当搜索词比索引多时如何匹配?

当搜索词比索引多时如何匹配?
EN

Stack Overflow用户
提问于 2020-11-30 01:56:20
回答 1查看 55关注 0票数 0

我有一个索引,是2-4个字符,没有空格,但用户经常搜索“完整的术语”,我没有索引,但有3个额外的字符后,空白。我索引"A1“或"A1B”或"A1B2“,而”完整术语“类似于"A1 11A”或"A1B ABA“或"A1B2 2C8”。

这是当前的映射:

代码语言:javascript
复制
"code": {
    "type": "text"
},

如果他搜索"A1“,它会带来所有这些内容--这也是正确的,如果他键入"A1B”,我只想带最后两个,如果他搜索"A1B2 2C8“,我只想带最后一个。

这有可能吗?如果是的话,最好的搜索/索引策略是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-30 02:12:50

索引映射:

代码语言:javascript
复制
{
  "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" 
      }
    }
  }
}

索引数据:

代码语言:javascript
复制
{
  "code": "A1"
}
{
  "code": "A1B"
}
{
  "code": "A1B2"
}

搜索查询:

代码语言:javascript
复制
{
    "query": {
        "match": {
            "code": {
                "query": "A1B2 2C8"
            }
        }
    }
}

搜索结果:

代码语言:javascript
复制
 "hits": [
      {
        "_index": "65067196",
        "_type": "_doc",
        "_id": "3",
        "_score": 1.3486402,
        "_source": {
          "code": "A1B2"
        }
      }
    ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65067196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档