我的ES文档中有一个字段是标签名称, 各个标签之间用空格隔开, 类似下面Json中的tagName这样:
我想要实现每个标签都能进行查询, 比如 我输入myba , 可以搜索到mybatis, 那么这个字段需要使用什么样的analyzer
这种自定义的analyzer可行么?
"analysis": {
"filter": {
"edge_ngram": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10
}
},
"analyzer": {
"ngram": {
"type": "custom",
"tokenizer": "whitespace",
"filter": ["edge_ngram", "lowercase"]
}
}
}
望各位大神指点
{
"_index": "test-xxgl-01",
"_type": "zyl-test.type",
"_id": "71",
"_version": 1,
"_score": 0,
"_source": {
"title": " 测试标签ES_02",
"summary": " 测试标签ES_02 测试标签ES_02",
"tagName": "vue.js redis 事务 mybatis kafka rocketmq",
"content": "测试标签ES_02测试标签ES_02测试标签ES_02测试标签ES_02"
}
}
我想要实现每个标签都能进行查询, 比如 我输入myba , 可以搜索到mybatis, 那么这个字段需要使用什么样的analyzer
这种自定义的analyzer可行么?
"analysis": {
"filter": {
"edge_ngram": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10
}
},
"analyzer": {
"ngram": {
"type": "custom",
"tokenizer": "whitespace",
"filter": ["edge_ngram", "lowercase"]
}
}
}
望各位大神指点
2 个回复
trycatchfinal
赞同来自: EricTowns 、core_wzw
可以使用wildcard或者prefix查询"myba"
core_wzw - 某AILab搜索技术负责人
赞同来自: EricTowns
数组+keyword+wildcard/prefix很漂亮,但速度会很慢,看业务数据量和查询耗时要求了。