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

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

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

二、英文分词器:

形态还原:

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

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. 采用“先删除,后创建”的方式代替更新。

全文检索Lucence(三)——分词器相关推荐

  1. 全文检索服务 ElasticSearch---------IK分词器的使用

    全文检索服务 ElasticSearch其他相关: 介绍入门及安装 Field 整合Spring Boot 集群管理 1.IK分词器 1.1测试分词器   在添加文档时会进行分词,索引中存放的就是一个 ...

  2. 7安装ik分词器_Solr7全文检索+IK分词

    1. 概述 介绍Solr之前,就不得不提业界大名鼎鼎的Lucene.Lucene是一个完全用Java编写 的高性能.跨平台的全文搜索引擎工具包,能满足几乎所有软件项目的搜索需求.Lucene是Apac ...

  3. Lucene全文检索_分词_复杂搜索_中文分词器

    1 Lucene简介 Lucene是apache下的一个开源的全文检索引擎工具包. 1.1 全文检索(Full-text Search)  1.1.1 定义 全文检索就是先分词创建索引,再执行搜索的过 ...

  4. 学习 ES 的笔记、全文检索、倒排索引、Lucene、ik中文分词器、Kibana使用Dev Tools

    文章目录 感悟 新接触的单词 知识点一:ES是什么? 知识点二:ES基本概念 知识点三:1.1 什么是全文检索和Lucene? 知识点四:1.2 什么是倒排索引,Lucene实现全文检索的流程是怎样? ...

  5. Elasticsearch(一)——Es安装(三个必安工具、安装各种类型分词器)、Es 十大核心概念、通过 Kibana 操作 Es(中文分词、Es各种索引命令操作)

    Elasticsearch(一)--Es安装(三个必安工具.安装各种类型分词器).Es 十大核心概念.通过 Kibana 操作 Es(中文分词.Es各种索引命令操作) 一.Elasticsearch ...

  6. 双向最大匹配算法思想详解,分词器及全文检索工具及Lucene框架简介

    一.中文分词理论描述 前言 这篇将使用Java实现基于规则的中文分词算法,一个中文词典将实现准确率高达85%的分词结果.使用经典算法:正向最大匹配和反向最大匹配算法,然后双剑合璧,双向最大匹配. 根据 ...

  7. Elasticsearch 6.4 ingest-attachment对office文件IK分词器全文检索(1) HttpAPI使用

    这款插件主要是处理ES中文档解析,如果博友们对ES感兴趣欢迎相互交流:(该文默认你已经具备Es的IK分词器能力) 安装: elasticsearch-plugin install ingest-att ...

  8. elasticsearch分词器词库热更新三种方案

    文章目录 一.本地文件读取方式 二.远程扩展热更新 IK 分词 三.重写ik源码连接mysql 一.本地文件读取方式 首先进入elasticsearch目录的plugins目录下,查看目录结构 2.进 ...

  9. elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))

    目录 一.分词器​ 1. 认识分词器 1.1 Analyzer 分析器 1.2 如何测试分词器 2. 内建的字符过滤器(character filter) 2.1 HTML过滤字符过滤器(HTML S ...

最新文章

  1. 团队项目第一阶段冲刺站立会议4(4月21日)
  2. 使用OpenGL Shader实现放大镜效果
  3. 【boundfield】GridView中BoundField与TemplateField的区别_boundfield
  4. 网页服务器日期格式,网站模板如何上传到主机上,用django定义自动插入的时间示格式如何调整...
  5. pd 生成mysql 脚本_Powerdesigner 生成增量SQL脚本
  6. 命令模式的两种不同实现
  7. [css] 你有用过vw布局吗?和使用rem有什么区别?
  8. python语法箭头_Python中的函数注释:参数有冒号,声明后有- 箭头
  9. python中bytearray函数_Python内置函数bytearray()
  10. 数据科学入门的5个技巧
  11. Powerpoint中VBA编程技巧
  12. tableau学生版注册流程
  13. 闲置台式机+文件服务器,闲置主机秒变家用NAS,让你的闲置电脑变存储中心
  14. Hadoop和Hbase版本选择
  15. 苹果手机访问html文件夹,iPhone如何访问Windows的共享文件夹
  16. 堆内存和栈内存的区别
  17. UI设计师面试时如何自我介绍
  18. 夜宿祝国寺(文:元哲)
  19. qt模拟键盘的三种实现方式(思路+demo)
  20. PAT 1110 区块反转 (25 分) c语言

热门文章

  1. Ubuntu 10.04 用Wine完美运行QQ 2009
  2. RS485三线制和两线制差别
  3. python中symbols函数用法_Python中偏函数用法示例
  4. linux iostat 命令详解
  5. [THUPC2017]天天爱射击 题解(主席树)
  6. 修改onlyoffice服务器端口,如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档
  7. 平板第三方电容笔怎么样?apple pencil一代平替笔推荐
  8. uniapp 如何获取当前时间,自定义时间格式(根据时间戳转换成时间,判断当前是上午还是下午)
  9. libtorch中tensor的data_ptr使用和巨坑
  10. IE中不显示背景颜色解决办法