工作生活

lucene4.7扩展

2019-07-03  本文已影响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));

    }

}

上一篇下一篇

猜你喜欢

热点阅读