lucene4.7扩展

作者: 雨末夏伤 | 来源:发表于2019-07-03 16:14 被阅读0次

    上篇文章已经实现了luncene的基础功能,满足正常需要,可是有时间很多情况下我们不需要语义分词那么精确,比如一些人名,什么的,,我们并不想拆分,所以就需要停用词和扩展词这些功能进行满足:

    IK的两个重要词典

    扩展词典:为的是让需要切分的字符串的词语 根据扩展词典里的词,不要切分开来。

    例如:扩展词典中有:中国的台湾 。那么原本会切分成:中国 的 台湾 在 东海 。会切分成:中国的台湾 在 东海

    停止词典:对比停止词典,直接删掉停止词典中出现的词语

    1.首先对自己的停用词和扩展词进行整理写入文档,

    2.扩展词的含义就是,比如“我叫杨小倩” 正常语义拆分会拆成:“我”,“叫”,“我叫”,“杨”,“小”,“倩”,等多种结果,可是如果扩展词文档里面配置了“杨小倩”,拆分的时候会当成整体“我”,“叫”,“杨小倩”等

    3.同样停用词的含义就是,不用查询的有些词,比如量词“个”等等,不需要查询的词语,导致搜索结果匹配太多

    4.进行配置:

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

    <properties>

        <comment>IK Analyzer 扩展配置</comment>

        <entry key="ext_dict">extend.dic</entry>

        <entry key="ext_stopwords">ext_stopword.dic</entry>

    </properties>

    5,进行测试:

    IKAnalyzerSupport

    package com.yunqi.cms.common;

    import java.io.StringReader;

    import java.util.ArrayList;

    import java.util.List;

    import org.wltea.analyzer.core.IKSegmenter;

    import org.wltea.analyzer.core.Lexeme;

    import com.alibaba.druid.util.StringUtils;

    import com.beust.jcommander.internal.Lists;

    public class IKAnalyzerSupport {

        /**

        * IK分词测试

        * @param target

        * @return

        */

        public static List<String> iKSegmenterToList(String target) throws Exception {

            if (StringUtils.isEmpty(target)){

                return Lists.newArrayList();

            }

            List<String> result = new ArrayList<>();

            StringReader sr = new StringReader(target);

            // 关闭智能分词 (对分词的精度影响较大)

            IKSegmenter ik = new IKSegmenter(sr, false);

            Lexeme lex;

            while((lex=ik.next())!=null) {

                String lexemeText = lex.getLexemeText();

                result.add(lexemeText);

            }

            //LOGGER.info("company:{}, iKSegmenterToList:{}", target, JSON.toJSON(result));

            return result;

        }

        public static void main(String[] args) throws Exception {

            String str="江一平";

            //String str="http://www.relaxheart.cn 是王琦同学的个人兴趣分享网站";

            System.out.println(iKSegmenterToList(str));

        }

    }

    相关文章

      网友评论

        本文标题:lucene4.7扩展

        本文链接:https://www.haomeiwen.com/subject/prqchctx.html