首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许在弹性搜索中使用snowball_analyzer进行不区分大小写的搜索

允许在弹性搜索中使用snowball_analyzer进行不区分大小写的搜索
EN

Stack Overflow用户
提问于 2015-07-22 10:27:04
回答 2查看 565关注 0票数 0

首先,我对ES完全陌生。我在下面创建了ES搜索条件,用于搜索工作良好的项目,但我现在需要的是,我希望将make字段转换为不区分大小写的字段,以便搜索结果与helloHeLloHELLO等相同。

我读过下面的文章,因为我的知识非常有限,所以我无法平静地应用于下面的例子:

not_analyzedmake中删除没有帮助。

代码语言:javascript
复制
'indexes' => [
    'my_project' => [
        'client' => 'default',
        'index_name' => 'hello',
        'settings' => [
            'index' => [
                'analysis' => [
                    'analyzer' => [
                        'snowball_analyzer' => [
                            'type' => 'snowball',
                            'language' => 'English',
                        ],
                    ],
                ],
            ],
        ],
        'types' => [
            'item' => [
                'mappings' => [
                    'uuid' => ['type' => 'string', 'index' => 'not_analyzed'],
                    'name' => ['type' => 'string', 'boost' => 8, 'analyzer' => 'snowball_analyzer'],
                    'make' => ['type' => 'string', 'index' => 'not_analyzed'],
                ]
            ],
        ],
    ],
],

以下是我创建的查询:

1

代码语言:javascript
复制
{
  "query": {
    "filtered": {
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "make": "HeLlo"
              }
            }
          ]
        }
      }
    }
  }
}
EN

回答 2

Stack Overflow用户

发布于 2015-07-22 10:31:49

你必须添加“小写”过滤器。下面是我使用的类似配置的摘录:

代码语言:javascript
复制
settings:
    index:
        analysis:
            analyzer:
                custom_search_analyzer:
                    type: custom
                    tokenizer: standard
                    filter: [stopwords, asciifolding ,lowercase, snowball, elision, worddelimiter]

在你的情况下,我想你应该这样改变:

代码语言:javascript
复制
...                    
'settings' => [
    'index' => [
        'analysis' => [
            'analyzer' => [
                'snowball_analyzer' => [
                    'type' => 'snowball',
                    'language' => 'English',
                    'filter' => [ 'lowercase' ]
                ],
            ],
        ],
    ],
],                        
...
票数 0
EN

Stack Overflow用户

发布于 2015-07-22 14:47:11

这一次,我在我发布的第一个链接上打开了答案,它也解决了我的问题,所以我的案例不敏感的工作例子是:

代码语言:javascript
复制
{
  "query": {
    "filtered": {
      "query": {
        "bool": {
          "must": [
            {
               "query_string": {
                  "query": "HeLlo*"
                }
            }
          ]
        }
      }
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31560476

复制
相关文章

相似问题

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