elasticsearch - ES 下面的字段如何匹配&在特定情况下不删除令牌?
问题描述
我有下面的映射。
"sub":{"type":"text", "analyzer":"stop_analyzer"}
我有一个查询
{
"_source":["sub"],
"query": {
"fuzzy" : { "sub" : "Thr" }
}
}
分析仪:
{
"analysis": {
"analyzer":{
"stop_analyzer":{
"tokenizer":"lowercase",
"filter":["synonym_graph","stop_el_filter"]
}
},
"filter": {
"stop_el_filter": {
"type": "stop",
"stopwords": "_english_"
},
"synonym_graph" : {
"type" : "synonym_graph",
"lenient": true,
"synonyms" : [
"americas, us, usa, u.s.a, america => america",
"americas-us public sector, america ps, ps america, ps usa => ps"
]
}
}
}
}
以下字符串如何匹配:
(USER_TRIGGERED (ALL:MAINT=8hr ARL of Nodes 02-A/B))
分析 API 提供以下标记:
"token": "user"
"token": "triggered"
"token": "all"
"token": "maint",
"token": "hr"
"token": "arl"
"token": "nodes"
"token": "b"
为什么Thr
要匹配这个文档?当我分析Thr
它的结果时thr
。
是因为模糊删除t
匹配hr
吗?- 是的,我认为我是对的。
和
有什么方法可以不将其删除A
-A/B
在特定情况下不考虑作为停用词[在没有空格时不标记A
]?
解决方案
Thr
与您的文档匹配,因为fuzzy
查询允许在该字长上保留 1 个字符的距离。因此,fuzzy(Thr)
匹配hr
令牌。
关于您的第二个问题,A
已删除,因为它是英语停用词并且您正在使用stop
令牌过滤器。所以如果你删除它,它A
也会被索引
推荐阅读
- php - 无法使用php将照片存储在数据库中
- vuejs2 - 我应该担心由于不删除事件处理程序而导致的内存泄漏吗?
- python - 如何解码base64图像PIL
- computer-vision - ImportError:无法导入名称“get_dataset”
- php - 使用理论查询生成器检查值是否在两列之一中
- jquery - 第二个ajaxGet忽略变量上的.replace
- php - 编码“UTF8”的无效字节序列:0x89 PostgreSQL Laravel 8
- gitlab - Gitlab:使用来自组外的依赖代理?
- html - 使每个子元素都应用父 div 类
- spring - Spring 的 @Scheduled 没有按预期的时间间隔触发 - 错过了很多