全文检索Lucence(三)——分词器

    前面的文章中已经涉及到了分词器的概念,必须使用同一个分词器建立索引和检索。我们的编程只需要了解中、英两种语言的分词器。

一、大致了解下分词器的作用机制:


    分词器:是建立索引和搜索的辅助工具,建立索引的分词器和搜索的分其次必须是同一个。

二、英文分词器:


形态还原:

将各种时态、形态、单复数的单词转换为单词的原型

worked——work

working——work

studies——study


如将这句英文分词的过程如下:

原句:IndexWriter addDocument's a javadoc.txt

1.切分次:“IndexWriter    ”、“addDocument's  ”“a”、“ javadoc.txt

2.切除停用词:“IndexWriter    ”、“addDocument's      ”、“  javadoc.txt

3.形态还原:  IndexWriter     ”、“addDocument  ”、“  javadoc.txt

4.转为小写:“Indexwriter     ”、“adddocument's      ”、“     javadoc.txt


三、中文分词器:    

中文分词器比较复杂一些,因为不是一个字就是一个词,而一个词在另外一个地方不一定还是一个词。常用的有三种方式:单字分词(默认)、二分法、词典分词。 

单字分词:一个汉字就是一个词,如:我、们、是、中、国、人

二分法:每相邻的两个词作为一个词:我们 、们是、是中、中国、国人

词典分词:按照某种造次法,与词库进行比对。如:“我们是中国人”使用极易分词就分解为“我们”“中国人”。


中文停用词:

    了、着、的、标点符号。排除停用词后,可以加快索引建立速度,也可以减小索引大小。


四、索引文件结构:

对索引有了一个大致的了解后,接触下内部机制


上图是倒排序索引的结构示例,类似英文课本后的单词索引表。实际的索引机制还是要复杂的多,比如,关键词在文本中的编号位置,或者首字母的字符位置等。


五、索引的检索与维护:

词汇表规模型对较小,文档集合规模较大。检索时,先从词汇表开始,然后找到对应的文档。如果查询中仅包含一个关键词,则在词汇表中找到该单词,并取出他对应的文档就可以了。如果查询中包含多个关键词,则需要将各个单词检索出的记录合并 

维护到排序有三个操作:插入、删除、更新。更新的代价较高,我们在使用Eclipse的时候会深有感触,如果不设置updating indexs往往会花费很长时间。这是因为文档修改后,文档中的很多关键词的位置都会发生变化,这就需要频繁的读取和修改记录。因此,一般采用“先删除,后创建”的方式代替更新。


总结:

    以上就是Lucence中索引的大致机制和工作原理,在使用的时候需要注意两点:

    1. 建立索引和检索使用同一个分词器对象

    2. 采用“先删除,后创建”的方式代替更新。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值