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扩展

    上篇文章已经实现了luncene的基础功能,满足正常需要,可是有时间很多情况下我们不需要语义分词那么精确,比如一些...

  • Springboot集成lucene4.7

    Lucene是一套用于全文检索和搜寻的开源程式库,一星期的研究实现了简单的基于cms新闻管理系统的全文搜索引擎,自...

  • Swift 扩展

    扩展UIView 扩展String 扩展UIColor 扩展UIButton 扩展String 扩展UIImage...

  • ES6扩展

    字符串的扩展正则的扩展数值的扩展数组的扩展函数的扩展对象的扩展

  • ES6扩展

    字符串扩展 正则扩展 数值扩展 函数扩展 对象扩展 数组扩展 字符串扩展 模版字符串 部分新的方法 padStar...

  • Swift--扩展

    扩展的概念 扩展计算属性 扩展方法 扩展构造函数 扩展下标 扩展的概念 在Swift中可以使用一种扩展机制,在原有...

  • 从Java到Kotlin(六)

    扩展与委托 目录 1.扩展 1.1 扩展函数 1.2 扩展属性 1.3 扩展伴生对象 1.4 扩展的作用域 2.委...

  • ES6基础-ES6的扩展

    进行对字符串扩展,正则扩展,数值扩展,函数扩展,对象扩展,数组扩展。 开发环境准备: 编辑器(VS Code, A...

  • Vue项目开发与规范--es6语法规范篇

    目录 简介 let const 解构赋值 正则的扩展 字符串的扩展 数值的扩展 数组的扩展 函数的扩展 对象的扩展...

  • Kotlin-面向对象-进阶

    扩展 扩展方法 Kotlin支持扩展方法和扩展属性。语法:被扩展的类/接口名.方法名() 父类不能使用子类的扩展方...

网友评论

    本文标题:lucene4.7扩展

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