• 分词器


    什么是分词器

        采用一种算法,将中英文本中的字符拆分开来,形成词汇,以待用户输入关健字后搜索

    为什么要分词器

         因为用户输入的搜索的内容是一段文本中的一个关健字,和原始表中的内容有差别,

         但作为搜索引擎来讲,又得将相关的内容搜索出来,此时就得采用分词器来最大限度

         匹配原始表中的内容

    分词器工作流程

         步一:按分词器拆分出词汇

         步二:去除停用词和禁用词

         步三:如果有英文,把英文字母转为小写,即搜索不分大小写

    分词器例子图解:“传智播客说我们的首都是北京呀I AM zhaojun”

    演示常用分词器测试,只观查结果

    package loaderman.analyzer;
    
    import java.io.StringReader;
    
    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.analysis.TokenStream;
    import org.apache.lucene.analysis.tokenattributes.TermAttribute;
    import org.wltea.analyzer.lucene.IKAnalyzer;
    /**
     * 测试Lucene内置和第三方分词器的分词效果*/
    public class TestAnalyzer {
        private static void testAnalyzer(Analyzer analyzer, String text) throws Exception {
            System.out.println("当前使用的分词器:" + analyzer.getClass());
            TokenStream tokenStream = analyzer.tokenStream("content",new StringReader(text));
            tokenStream.addAttribute(TermAttribute.class);
            while (tokenStream.incrementToken()) {
                TermAttribute termAttribute = tokenStream.getAttribute(TermAttribute.class);
                System.out.println(termAttribute.term());
            }
        }
    
    
    
        public static void main(String[] args) throws Exception{
            //Lucene内存的分词器
            //testAnalyzer(new StandardAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀");
            //testAnalyzer(new FrenchAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀");
            //testAnalyzer(new RussianAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀");
            //testAnalyzer(new ChineseAnalyzer(),"呢哈说我们的首都是北京呀");
            //testAnalyzer(new CJKAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀");
            //testAnalyzer(new CJKAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀");
            //testAnalyzer(new FrenchAnalyzer(LuceneUtil.getVersion()),"呢哈说我们的首都是北京呀""); 
    testAnalyzer(new IKAnalyzer(),"呢哈说我们的首都是北京呀"); //testAnalyzer(new IKAnalyzer(),"上海自来水来自海上"); } }

    2.6使用第三方IKAnalyzer分词器--------中文首选

         需求:过滤掉上面例子中的“说”,“的”,“呀”,且将“首都”看成一个整体 关健字

         步一:导入IKAnalyzer分词器核心jar包,IKAnalyzer3.2.0Stable.jar

         步二:将IKAnalyzer.cfg.xml和stopword.dic和xxx.dic文件复制到MyEclipse的src目录下,

    再进行配置,在配置时,首行需要一个空行

    <?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">/mydict.dic</entry> 
        
        
        <!--用户可以在这里配置自己的扩展停止词字典 -->
        <entry key="ext_stopwords">/surname.dic</entry> 
        
        
    </properties>
    首都   注/mydict.dic文件
    说    注/surname.dic文件
    的
    呀
  • 相关阅读:
    2星|《自金融》:公开信息汇总,缺乏深度,缺乏自有观点
    3星|《好好工作》:适合职场新手看的工作原则
    QQ2010如何开启透明效果皮肤
    如何制作迅雷7的皮肤,如何获取迅雷7皮肤的图片
    如何使用易我数据恢复向导恢复数码相机删除的图片
    如何使用射手影音寻找字幕
    云端软件平台 如何在云端分享自己的文章
    如何使用千千静听为MP3添加专辑封面和文字信息
    如何使用Ultraiso制作U盘启动盘
    如何使用SubtitleWorkshop制作字幕
  • 原文地址:https://www.cnblogs.com/loaderman/p/10059510.html
Copyright © 2020-2023  润新知