看,灰机...

请问 es 如何在分词时加入 符号等特殊字符为搜索条件

Elasticsearch | 作者 ting314193222 | 发布于2016年05月23日 | 阅读数:16599

目前的情况是: 在我使用ik分词之后 ,当我搜索 “你好”时 ,得到两个结果 “你好”和 “你好。” _score 得分是相同的(ps:此时的排序规则是 入库时间吗?)。

期望的结果是 加入符号作为搜索条件,在使用ik分词(或其他分词器)之后,既能够使用模糊搜索到所有符合分词的值,也能够精准匹配 每一个特殊字符,使其得分更高,排序靠前。
 
已邀请:

ting314193222 - php 全栈

赞同来自: medcl

好吧,找到了解决方案,show一下吧。
{
"template": "my-nick",
"order": 1,
//覆盖更小的order模板
"settings": {
//为了确保测试分数的准确性,用1个分片
//todo: 线上要用多个
"number_of_shards": 10,
"number_of_replicas": 0,
"index": {
"analysis": {
"filter": {
"my_ngram_delimiter": {
"type": "length",
"max": 20,
"min": 0
}
},
"analyzer": {
"my_ngram_analyzer": {
"tokenizer": "my_ngram_tokenizer",
"filter": [
"my_ngram_delimiter"
]
}
},
"tokenizer": {
"my_ngram_tokenizer": {
"type": "nGram",
"min_gram":1,
"max_gram":20
}
}
}
}
},
"mappings": {
"_default_": {
"_all": {
"enabled": false
}
},
"nick": {
"properties": {
"uid": {
"type": "string",
"index": "not_analyzed"
},
"nick": {
"type": "string",
"analyzer": "my_ngram_analyzer",
"search_analyzer": "my_ngram_analyzer"
}
}
}
}
}
参考文档:https://www.elastic.co/guide/e ... .html
 

ting314193222 - php 全栈

赞同来自:

喂=。=  求大神啊帮忙那……
给个意见,是不是需要自己写个专门的分词器?
@medcl @stab

要回复问题请先登录注册