码迷,mamicode.com
首页 > 其他好文 > 详细

elasticSearch+ik_smart 支持 符号检索

时间:2020-05-20 12:14:33      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:sele   last   重启   lis   直接   graph   ref   git   https   

首先 来展示下效果

技术图片

 

 1% 在一起 是因为我在自定义词库里面定义了,如果不修改ik_smart源码 是连百分号 都看不到的,对了 我使用的是 elasticsearch-analysis-ik-7.3.2

第一步 下载elasticsearch-analysis-ik-7.3.2源码 找到 CharacterUtil.java这个类

将  identifyCharType 方法从这样

static int identifyCharType(char input){
        if(input >= 0 && input <= 9){
            return CHAR_ARABIC;
            
        }else if((input >= a && input <= z)
                || (input >= A && input <= Z)){
            return CHAR_ENGLISH;
            
        }else {
            Character.UnicodeBlock ub = Character.UnicodeBlock.of(input);
            
            if(ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS  
                    || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS  
                    || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A){
                //目前已知的中文字符UTF-8集合
                return CHAR_CHINESE;
                
            }else if(ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS //全角数字字符和日韩字符
                    //韩文字符集
                    || ub == Character.UnicodeBlock.HANGUL_SYLLABLES 
                    || ub == Character.UnicodeBlock.HANGUL_JAMO
                    || ub == Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO
                    //日文字符集
                    || ub == Character.UnicodeBlock.HIRAGANA //平假名
                    || ub == Character.UnicodeBlock.KATAKANA //片假名
                    || ub == Character.UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS){
                return CHAR_OTHER_CJK;
                
            }
        }
        //其他的不做处理的字符
        return CHAR_USELESS;
    }

修改为 这样 对 就是多加个 else if语句块

static int identifyCharType(char input){
        if(input >= 0 && input <= 9){
            return CHAR_ARABIC;
            
        }else if((input >= a && input <= z)
                || (input >= A && input <= Z)){
            return CHAR_ENGLISH;
            
        }else {
            Character.UnicodeBlock ub = Character.UnicodeBlock.of(input);
            
            if(ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS  
                    || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS  
                    || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A){
                //目前已知的中文字符UTF-8集合
                return CHAR_CHINESE;
                
            }else if(ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS //全角数字字符和日韩字符
                    //韩文字符集
                    || ub == Character.UnicodeBlock.HANGUL_SYLLABLES
                    || ub == Character.UnicodeBlock.HANGUL_JAMO
                    || ub == Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO
                    //日文字符集
                    || ub == Character.UnicodeBlock.HIRAGANA //平假名
                    || ub == Character.UnicodeBlock.KATAKANA //片假名
                    || ub == Character.UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS){
                return CHAR_OTHER_CJK;
                
            } else if (ub == Character.UnicodeBlock.GREEK // 希腊符号
                    // 希腊扩展符号
                    || ub == Character.UnicodeBlock.GREEK_EXTENDED
                    // 拉丁字符
                    || ub == Character.UnicodeBlock.BASIC_LATIN
                    // 拉丁补充字符
                    || ub == Character.UnicodeBlock.LATIN_1_SUPPLEMENT
                    // 拉丁扩展A字符
                    || ub == Character.UnicodeBlock.LATIN_EXTENDED_A
                    // 拉丁扩展B字符
                    || ub == Character.UnicodeBlock.LATIN_EXTENDED_B) {
                return CHAR_CHINESE;
            }
        }
        //其他的不做处理的字符
        return CHAR_USELESS;
    }

然后 高能预警

使用javac 将我们修改后的 CharacterUtil 类编译成.class文件

然后直接替换进本来的之前使用的jar包(可能没描述清楚,截个图)

技术图片

 

 然后

技术图片

 

 然后 重启elasticSearch 搞定 (其实我也只是抱着试一试的心态 没想到真的可以)

 

elasticSearch+ik_smart 支持 符号检索

标签:sele   last   重启   lis   直接   graph   ref   git   https   

原文地址:https://www.cnblogs.com/guanxiaohe/p/12922742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!