我基本上是在尝试禁用小写过滤器,以便能够对文本字段进行区分大小写的匹配。按照索引和分析器文档,我创建了以下不带小写过滤器的映射:
PUT/my_索引
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "standard",
"char_filter": [
"html_strip"
],
"filter": [
"asciifolding"
]
}
}
}
}
}
我启用fielddata,以便在之后检查标记化
放置我的索引/\u映射/\u文档
{
"properties": {
"my_field": {
"type": "text",
"fielddata": true
}
}
}
我测试了自定义分析器,以确保它不像预期的那样是小写的
后 /my_index/analyze
{
"analyzer": "my_custom_analyzer",
"text": "Is this <b>déjà Vu</b>?"
}
得到以下响应
{
"tokens": [
{
"token": "Is",
"start_offset": 0,
"end_offset": 2,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "this",
"start_offset": 3,
"end_offset": 7,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "deja",
"start_offset": 11,
"end_offset": 15,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "Vu",
"start_offset": 16,
"end_offset": 22,
"type": "<ALPHANUM>",
"position": 3
}
]
}
太好了,事情并没有像我想的那样变小。现在我试着插入相同的文本,看看会发生什么。
过帐/我的索引/\u文档
{
"my_field": "Is this <b>déjà Vu</b>?"
}
然后试着查询回来
POST/my\u索引/\u搜索
{
"query": {
"regexp": {
"my_field": "Is.*"
}
},
"docvalue_fields": [
"my_field"
]
}
没有点击率。现在如果我试着降低正则表达式,我得到
POST/my\u索引/\u搜索
{
"query": {
"regexp": {
"my_field": "is.*"
}
},
"docvalue_fields": [
"my_field"
]
}
它返回
{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "my_index",
"_type": "_doc",
"_id": "6d6PP20BXDCQSINU0RC_",
"_score": 1,
"_source": {
"my_field": "Is this <b>déjà Vu</b>?"
},
"fields": {
"my_field": [
"b",
"déjà",
"is",
"this",
"vu"
]
}
}
]
}
}
所以在我看来,由于只有小写的正则表达式匹配,并且doc值都以小写的形式返回,因此某些地方的事情似乎仍然在变得更低。我在这里做错了什么?
到目前为止,良好的开端!!!
唯一的问题是,您没有将自定义分析器应用于您的字段。把你的映射改成这个,它会让你走得更远。
PUT my_index/_mapping/_doc
{
"properties": {
"my_field": {
"type": "text",
"fielddata": true,
"analyzer": "my_custom_analyzer" <-- add this
}
}
}
问题内容: 我已经下载了包含技能分类法的onet数据集,并将其上传到了Elasticsearch中。在技能分类中,有一些技能,例如c ++ 、. net,C#。我想给c#并且只获得c#的技能。通过检查一些链接,我已如下设置索引的映射和设置。 当我使用如下查询 我正在获得所有具有“ c”的技能 当我使用以下查询时假设应用了分析器 我得到空输出。我是否正确包括了分析仪,或者我的查询错误? 问题答案
但是它返回的标记下面。 让我知道我在代码中遗漏了什么。
本文向大家介绍详解AngularJS中$filter过滤器使用(自定义过滤器),包括了详解AngularJS中$filter过滤器使用(自定义过滤器)的使用技巧和注意事项,需要的朋友参考一下 1.内置过滤器 2.自定义过滤器 套用上面的格式定义两个简单的自定义过滤器一个带条件的,一个不带条件的。 (1)【不带条件】,功能:固定转换(有时候项目中会遇到角色代号,门店编码什么的,但是显示的时候
问题内容: 我正在尝试搜索数据库,并能够使用大写/小写过滤器术语,但是我注意到在应用分析器时,我不知道如何在过滤后的搜索中应用小写分析器。这是查询: 我有一个小写的类型: 以及相应的映射: 问题答案: 问题是您在索引期间分析了一个字段以使其小写,但您正在对未分析的查询使用术语过滤器: 术语过滤器 筛选具有包含术语(未分析)的字段的文档。与术语查询类似,不同之处在于它充当过滤器。 http://ww
演示在网关追加一个header public class CustomFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 演示在网关追加heade
SOFARPC 提供了一套良好的可扩展性机制,为各个模块提供 SPI 的能力。 SOFARPC 对请求与响应的过滤链处理方式是通过多个过滤器 Filter 来进行具体的拦截处理,该部分可由用户自定义 Filter 扩展,自定义 Filter 的执行顺序在内置 Filter 之后。具体方式如下: Bolt Filter 新建自定义 Filter 。 public class CustomFilter