1、一段字符串ABABABABABAB尝试了standard simple ik english分析器,如果进以字符串A或AB或者ABAB等跟原字符串不匹配的字符去搜索,都搜不到内容,只有跟原字符串一致如“ABABABABABAB”才能搜到内容。
2、例子如下:
mapping:
插入数据:
_search:
根据field查数据:
以上,希望各位朋友能帮忙指正是否有问题,或者推荐使用哪个分析器,非常感谢!
1、一段字符串ABABABABABAB尝试了standard simple ik english分析器,如果进以字符串A或AB或者ABAB等跟原字符串不匹配的字符去搜索,都搜不到内容,只有跟原字符串一致如“ABABABABABAB”才能搜到内容。
2、例子如下:
mapping:
插入数据:
_search:
根据field查数据:
以上,希望各位朋友能帮忙指正是否有问题,或者推荐使用哪个分析器,非常感谢!
你的需求应该是子串匹配。ABABABABA这样的内容,es会分成一个词,在倒排索引中,就只有ABABABAB,而没有A/AB/ABAB,所以你搜不到。两个方法:(1)自己实现分词器,但是就这个情况可能会出现太多词了,不可取 (2)使用es的API,用子串搜索或前缀搜索。
1 回答2.7k 阅读
1 回答1.2k 阅读
额,我目前的解决方案是将英文字符串最大的token长度设定为2,也就是分析器的max_token_length参数,这样如“ABABABABAB”字符串就会拆分成5个为“AB”的token,如下是我索引中的自定义分析器及其属性,有需求的同学可以参考:
PUT /goods
{
"settings": {
},
"mappings": {
}