elasticsearch - 带有大写标记的 Elasticsearch word_delimiter 过滤器不匹配
问题描述
我使用自定义分析器构建了一个 ElasticSearch 索引,该分析器使用lowercase
和自定义word_delimiter
过滤器和keyword
标记器。
"merged_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase",
"asciifolding",
"word_delim",
"trim"
]
},
"merged_search_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase",
"asciifolding"
]
}
"word_delim": {
"type": "word_delimiter",
"catenate_words": true,
"generate_word_parts": false,
"generate_number_parts": false,
"preserve_original": true
}
"properties": {
"lastName": {
"type": "keyword",
"normalizer": "keyword_normalizer",
"fields": {
"merged": {
"type": "text",
"analyzer": "merged_analyzer",
"search_analyzer": "merged_search_analyzer"
}
}
}
}
然后我尝试搜索包含破折号分隔的子词的文档,例如'Abc-Xyz'
. 使用该.merged
领域。'abc-xyz'
和(小写)都'abcxyz'
匹配,这正是我所期望的,但我希望我的分析器也匹配大写字母或空格(例如'Abc-Xyz'
,'abc-xyz '
)。
看起来像过滤器trim
,lowercase
对我的分析仪没有影响
知道我做错了什么吗?
我使用弹性 6.2.4
解决方案
推荐阅读
- postgresql - 无法重置 postgresql 数据库的密码
- sql-server - 当前年份的第一天和最近一个季度的最后一天的 SSIS 表达式
- mongodb - “上下文中没有事务”异常来自哪里?
- google-apps-script - Google Script onEdit(e) 函数和行范围
- html - 为什么@media only screen and (min-width: 768px) 也适用于小于768px的屏幕宽度
- c# - 我可以在安装 NuGet 包时添加这些 .dll 吗?
- python - 根据行内值和列标题在 pandas 数据框中设置值
- java - 嵌套循环的代码调整以获得更好的性能
- c++ - 什么是固有的安全漏洞
标题? - html - Zendesk 谈话链接