zoukankan      html  css  js  c++  java
  • 分词器

    什么是分词器

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

    为什么要分词器

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

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

         匹配原始表中的内容

    分词器工作流程

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

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

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

    分词器例子图解:“传智播客说我们的首都是北京呀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文件
    的
    呀
  • 相关阅读:
    android:text 文字阴影设置
    android 布局的android:padding 和android:margin的区别
    sqlite的Query方法操作和参数详解
    SQL Server中如何让SQL语句对字符串大小写敏感
    android SQLite数据库(转)
    JAVA中内存分配的问题
    testview属性之详解
    在linux环境下安装VMtools(成功)
    关于配置文件
    C#的几种“属性”概念理解
  • 原文地址:https://www.cnblogs.com/loaderman/p/10059510.html
Copyright © 2011-2022 走看看