全文检索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. 采用“先删除,后创建”的方式代替更新。
全文检索Lucence(三)——分词器相关推荐
- 全文检索服务 ElasticSearch---------IK分词器的使用
全文检索服务 ElasticSearch其他相关: 介绍入门及安装 Field 整合Spring Boot 集群管理 1.IK分词器 1.1测试分词器 在添加文档时会进行分词,索引中存放的就是一个 ...
- 7安装ik分词器_Solr7全文检索+IK分词
1. 概述 介绍Solr之前,就不得不提业界大名鼎鼎的Lucene.Lucene是一个完全用Java编写 的高性能.跨平台的全文搜索引擎工具包,能满足几乎所有软件项目的搜索需求.Lucene是Apac ...
- Lucene全文检索_分词_复杂搜索_中文分词器
1 Lucene简介 Lucene是apache下的一个开源的全文检索引擎工具包. 1.1 全文检索(Full-text Search) 1.1.1 定义 全文检索就是先分词创建索引,再执行搜索的过 ...
- 学习 ES 的笔记、全文检索、倒排索引、Lucene、ik中文分词器、Kibana使用Dev Tools
文章目录 感悟 新接触的单词 知识点一:ES是什么? 知识点二:ES基本概念 知识点三:1.1 什么是全文检索和Lucene? 知识点四:1.2 什么是倒排索引,Lucene实现全文检索的流程是怎样? ...
- Elasticsearch(一)——Es安装(三个必安工具、安装各种类型分词器)、Es 十大核心概念、通过 Kibana 操作 Es(中文分词、Es各种索引命令操作)
Elasticsearch(一)--Es安装(三个必安工具.安装各种类型分词器).Es 十大核心概念.通过 Kibana 操作 Es(中文分词.Es各种索引命令操作) 一.Elasticsearch ...
- 双向最大匹配算法思想详解,分词器及全文检索工具及Lucene框架简介
一.中文分词理论描述 前言 这篇将使用Java实现基于规则的中文分词算法,一个中文词典将实现准确率高达85%的分词结果.使用经典算法:正向最大匹配和反向最大匹配算法,然后双剑合璧,双向最大匹配. 根据 ...
- Elasticsearch 6.4 ingest-attachment对office文件IK分词器全文检索(1) HttpAPI使用
这款插件主要是处理ES中文档解析,如果博友们对ES感兴趣欢迎相互交流:(该文默认你已经具备Es的IK分词器能力) 安装: elasticsearch-plugin install ingest-att ...
- elasticsearch分词器词库热更新三种方案
文章目录 一.本地文件读取方式 二.远程扩展热更新 IK 分词 三.重写ik源码连接mysql 一.本地文件读取方式 首先进入elasticsearch目录的plugins目录下,查看目录结构 2.进 ...
- elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))
目录 一.分词器 1. 认识分词器 1.1 Analyzer 分析器 1.2 如何测试分词器 2. 内建的字符过滤器(character filter) 2.1 HTML过滤字符过滤器(HTML S ...
最新文章
- 团队项目第一阶段冲刺站立会议4(4月21日)
- 使用OpenGL Shader实现放大镜效果
- 【boundfield】GridView中BoundField与TemplateField的区别_boundfield
- 网页服务器日期格式,网站模板如何上传到主机上,用django定义自动插入的时间示格式如何调整...
- pd 生成mysql 脚本_Powerdesigner 生成增量SQL脚本
- 命令模式的两种不同实现
- [css] 你有用过vw布局吗?和使用rem有什么区别?
- python语法箭头_Python中的函数注释:参数有冒号,声明后有- 箭头
- python中bytearray函数_Python内置函数bytearray()
- 数据科学入门的5个技巧
- Powerpoint中VBA编程技巧
- tableau学生版注册流程
- 闲置台式机+文件服务器,闲置主机秒变家用NAS,让你的闲置电脑变存储中心
- Hadoop和Hbase版本选择
- 苹果手机访问html文件夹,iPhone如何访问Windows的共享文件夹
- 堆内存和栈内存的区别
- UI设计师面试时如何自我介绍
- 夜宿祝国寺(文:元哲)
- qt模拟键盘的三种实现方式(思路+demo)
- PAT 1110 区块反转 (25 分) c语言
热门文章
- Ubuntu 10.04 用Wine完美运行QQ 2009
- RS485三线制和两线制差别
- python中symbols函数用法_Python中偏函数用法示例
- linux iostat 命令详解
- [THUPC2017]天天爱射击 题解(主席树)
- 修改onlyoffice服务器端口,如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档
- 平板第三方电容笔怎么样?apple pencil一代平替笔推荐
- uniapp 如何获取当前时间,自定义时间格式(根据时间戳转换成时间,判断当前是上午还是下午)
- libtorch中tensor的data_ptr使用和巨坑
- IE中不显示背景颜色解决办法