首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Elasticsearch分析器与搜索查询(打字机搜索、组合搜索)连接起来?

如何将Elasticsearch分析器与搜索查询(打字机搜索、组合搜索)连接起来?
EN

Stack Overflow用户
提问于 2022-04-27 12:57:16
回答 1查看 97关注 0票数 0

我有一个问题,映射分析器到现场。

我的优先级是基于搜索(我想要根据给定的文本自动完成搜索)1必须从左侧匹配(1优先级),2在给定文本中的任何单词(2优先级),3任何字符类似于给定文本中的组合(3优先级)

代码语言:javascript
复制
**1. I created field mapping with the custom analyzer.**
    `
    "properties" => [
                "name" => [
                    "type"              => "search_as_you_type",
                    "analyzer"          => "my_tokenizer",
                ],
        ];
    `
**2. created a custom analyzer**
    
    {
        "settings": { 
          "analysis": {
              "tokenizer": { 
                   "my_tokenizer": {
                        "type": "edge_ngram", 
                        "min_gram": 1, 
                         "max_gram": 10, 
                         "token_chars": ["letter", "digit", "symbol"]
                    }
                },
               "analyzer": { 
                "my_analyzer":{
                       "tokenizer": "my_tokenizer"
                }
               }
             }
          }
       }
    
**3. Search query**
  
    'query' => [
               'query_string' => [
                      'default_field' => "name",
                      'query' => "test",
                      'default_operator' => "AND",
                    ],
         ],

**The result I am getting:**

TEST
ABC TEST
NAKT TZY TEST
TEST POST
TEST VN

**What I want :**
TEST
TEST VN
TEST POST
ABC TEST
NAKT TZY TEST
EN

回答 1

Stack Overflow用户

发布于 2022-04-27 15:23:49

我不明白为什么要为要用作自动完成的search_as_you_type字段使用分析器。search_as_you_type已经用ngram创建了子字段。

我的地图是这样的:

代码语言:javascript
复制
"mappings": {
     "properties": {
       "name": {
         "type": "search_as_you_type"
       }
     }
   }

下面的查询按您的要求运行。

代码语言:javascript
复制
{
  "query": {
    "multi_match": {
      "query": "test",
      "type": "bool_prefix",
      "fields": [
        "name",
        "name._2gram",
        "name._3gram"
      ]
    }
  }
}

见更多信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-as-you-type.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72029204

复制
相关文章

相似问题

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