lucene学习二:lucene分词器

分词器的作用: 在创建索引时会用到分词器,在使用字符串搜索时也会用到分词器,这两个地方要使用同一个分词器,否则可能会搜索不出结果。Analyzer(分词器)的作用是把一段文本中的词按规则取出所包含的所有词。对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由子类实现的,所以对于不同的语言(规则),要用不同的分词器在全文。本文介绍几种常见的分词器,目前运用最多的是庖丁解牛,当然还有许多第三方的分词器,不同的分词器分的词是不一样的。

1:分词器测试工具类

 public static void testAnalzyer(Analyzer analyzer,String text) throws IOException{
        
        System.out.println("当前使用的分词器:" + analyzer.getClass().getSimpleName());
        TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(text));
        tokenStream.addAttribute(CharTermAttribute.class);
        tokenStream.reset();
        while (tokenStream.incrementToken()) {
           CharTermAttribute charTermAttribute = tokenStream.getAttribute(CharTermAttribute.class);
              System.out.println(new String(charTermAttribute.toString()));
       }

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

       String text="lucene 是一个全文检索的高大上的工具包";
        testAnalzyer(analyzer, text);

}

2:不同的分词器

Analyzer analyzer=new StandardAnalyzer(Version.LUCENE_44);//单字分词器

结果:

//二分法分词...
 Analyzer analyzer=new CJKAnalyzer(Version.LUCENE_44);

结果:

//第三方的中文的分词器,庖丁分词器, 中文分词,特点:扩展新的词,自定义停用词...
Analyzer analyzer=new IKAnalyzer();//注意下载的jar包要和lucene的版本匹配

可以发现庖丁会帮你自动的分词,它有一套分词规则,如果仍然对这个分词结果不满意还可以优化,就是切分关键字和停用字,这个可以建立一个配置文件,再添加2个字典文件分别是关键字和停用字,这三个文件必须与代码同在src目录下

lucene001\src\IKAnalyzer.cfg.xml

<?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">ext_stopword.dic</entry>
</properties>

lucene001\src\ext_stopword.dic//停用的单字写上去,写完一个换行,这里我们想去掉一,上,的,包字


lucene001\src\mydict.dic//关键字写完一个换行,高大上是个关键字,在文件上加上

高大上

。。。(以后其他的额可以扩展)

加上这三个文件最后运行结果:

可以发现最后这种比较好。本文用的jar包可以参考另外一篇文章lucenen的增删改查那篇。至此分词器介绍完毕。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值