ElasticSearch _suggest查询区分大小写。希望他们不区分大小写

布赖恩·李辛格

我目前正在使用此端点和请求执行搜索:

elasticserver.com/citysuggest/_suggest -d {
  "result": {
    "text": "Chicago",
    "completion": {
      "field": "autoCompleteName"
    }
}

这是我的索引映射:

{
    "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 1,
        "index": {
            "mapper": {
                "dynamic": false
            }
        },
        "analysis": {
            "analyzer": {
                "str_search_analyzer": {
                    "tokenizer": "standard",
                    "filter": ["standard", "str_delimiter", "asciifolding", "porter_stem"]
                },
                "str_index_analyzer": {
                    "tokenizer": "standard",
                    "filter": ["standard", "str_delimiter", "asciifolding", "porter_stem"],
                    "char_filter": "html_strip"
                }
            },
            "filter": {
                "str_delimiter": {
                    "type": "word_delimiter",
                    "generate_word_parts": true,
                    "catenate_words": true,
                    "catenate_numbers": true,
                    "catenate_all": true,
                    "split_on_case_change": true,
                    "preserve_original": true,
                    "split_on_numerics": true,
                    "stem_english_possessive": true
                }
            }
        }
    },
    "mappings": {
        "city": {
            "_source": {
                "enabled": false
            },
            "dynamic": false,
            "properties": {
                "_all": {
                    "enabled": false
                },
                "autoCompleteName": {
                    "type": "completion",
                    "index_analyzer": "str_index_analyzer",
                    "search_analyzer": "str_search_analyzer"
                }
            }
        }
    }
}

当我搜索“芝加哥”时,它会返回预期结果,因为它找到了与芝加哥匹配的内容,但是,当我搜索“芝加哥”时,它不返回任何内容。我一辈子都无法弄清楚我需要为使搜索不区分大小写而需要更改的内容。如果用户键入“ ChiCAgO”,则应返回我的芝加哥结果,相反,我什么也得不到。

为了测试我的分析仪,我运行了这个:

elasticserver.com/citysuggest/_analyze?text=ChicaGo&pretty

然后我得到了看起来像正确标记化的值。

{
  "tokens": [
    {
      "token": "chicago",
      "start_offset": 0,
      "end_offset": 7,
      "type": "<ALPHANUM>",
      "position": 1
    }
  ]
}
奥利·克鲁克申克(Olly Cruickshank)

您只需要在分析器中添加小写标记过滤器即可。

 "analysis": {
     "analyzer": {
         "str_search_analyzer": {
             "tokenizer": "standard",
             "filter": ["standard", "str_delimiter", "asciifolding", "porter_stem", "lowercase"]
         },
         "str_index_analyzer": {
             "tokenizer": "standard",
             "filter": ["standard", "str_delimiter", "asciifolding", "porter_stem", "lowercase"],
             "char_filter": "html_strip"
         }
     },
     "filter": {
         "str_delimiter": {
             "type": "word_delimiter",
             "generate_word_parts": true,
             "catenate_words": true,
             "catenate_numbers": true,
             "catenate_all": true,
             "split_on_case_change": true,
             "preserve_original": true,
             "split_on_numerics": true,
             "stem_english_possessive": true
         }
     }
 }

您的测试用例成功了,因为您没有指定分析器,请尝试:

curl -XGET 'localhost:9200/citysuggest/_analyze?analyzer=str_index_analyzer&text=ChicaGo&pretty'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ElasticSearch _suggest查询区分大小写。希望他们不区分大小写

来自分类Dev

ElasticSearch:为什么query_string不区分大小写,而通配符区分大小写?

来自分类Dev

Elasticsearch完成建议不区分大小写

来自分类Dev

Elasticsearch完成建议不区分大小写

来自分类Dev

Elasticsearch NEST 创建不区分大小写的索引

来自分类Dev

ElasticSearch模糊查询和区分大小写

来自分类Dev

在Elasticsearch中匹配查询是否区分大小写?

来自分类Dev

ElasticSearch模糊查询和区分大小写

来自分类Dev

如何在 ElasticSearch 中构建不区分大小写的通配符查询?

来自分类Dev

Elasticsearch NEST,区分大小写的多字段

来自分类Dev

Elasticsearch字段名称区分大小写

来自分类Dev

如何在Elasticsearch中实现区分大小写的搜索?

来自分类Dev

仅在Elasticsearch区分大小写时获得结果

来自分类Dev

Elasticsearch中的意外字符串排序(不区分大小写)

来自分类Dev

如何在Elasticsearch中搜索不区分大小写的精确文本

来自分类Dev

ElasticSearch 5按关键字排序字段不区分大小写

来自分类Dev

Elasticsearch搜索不区分大小写的字段的确切值

来自分类Dev

如何在Elasticsearch中对关键字字段进行不区分大小写的搜索而无需重新索引?

来自分类Dev

使用Elasticsearch Java API匹配多个单词中的任何一个,不区分大小写

来自分类Dev

为什么区分大小写在elasticSearch中不起作用

来自分类Dev

Mongo $ in不区分大小写的查询

来自分类Dev

使SQLAlchemy查询不区分大小写

来自分类Dev

Solr不区分大小写的查询

来自分类Dev

Elasticsearch:如何使聚合字段不更改值的大小写

来自分类Dev

不区分大小写的argparse选择

来自分类Dev

python的不区分大小写的IN

来自分类Dev

使自动完成不区分大小写

来自分类常见问题

javascript include()不区分大小写

来自分类Dev

弹性搜索不区分大小写

Related 相关文章

  1. 1

    ElasticSearch _suggest查询区分大小写。希望他们不区分大小写

  2. 2

    ElasticSearch:为什么query_string不区分大小写,而通配符区分大小写?

  3. 3

    Elasticsearch完成建议不区分大小写

  4. 4

    Elasticsearch完成建议不区分大小写

  5. 5

    Elasticsearch NEST 创建不区分大小写的索引

  6. 6

    ElasticSearch模糊查询和区分大小写

  7. 7

    在Elasticsearch中匹配查询是否区分大小写?

  8. 8

    ElasticSearch模糊查询和区分大小写

  9. 9

    如何在 ElasticSearch 中构建不区分大小写的通配符查询?

  10. 10

    Elasticsearch NEST,区分大小写的多字段

  11. 11

    Elasticsearch字段名称区分大小写

  12. 12

    如何在Elasticsearch中实现区分大小写的搜索?

  13. 13

    仅在Elasticsearch区分大小写时获得结果

  14. 14

    Elasticsearch中的意外字符串排序(不区分大小写)

  15. 15

    如何在Elasticsearch中搜索不区分大小写的精确文本

  16. 16

    ElasticSearch 5按关键字排序字段不区分大小写

  17. 17

    Elasticsearch搜索不区分大小写的字段的确切值

  18. 18

    如何在Elasticsearch中对关键字字段进行不区分大小写的搜索而无需重新索引?

  19. 19

    使用Elasticsearch Java API匹配多个单词中的任何一个,不区分大小写

  20. 20

    为什么区分大小写在elasticSearch中不起作用

  21. 21

    Mongo $ in不区分大小写的查询

  22. 22

    使SQLAlchemy查询不区分大小写

  23. 23

    Solr不区分大小写的查询

  24. 24

    Elasticsearch:如何使聚合字段不更改值的大小写

  25. 25

    不区分大小写的argparse选择

  26. 26

    python的不区分大小写的IN

  27. 27

    使自动完成不区分大小写

  28. 28

    javascript include()不区分大小写

  29. 29

    弹性搜索不区分大小写

热门标签

归档