SpringBoot+Lucene第三篇——分词
Lucene的学习第三篇——分词
Lucene创建索引—分词
分词主要介绍这几个问题
分词是什么?
分词干嘛?
分词怎么分?
疑问:
看完这篇,带着疑问看下一篇
下一篇的代码中,能找到aaabbb.txt文档,但是我们不能找到aaabbb文档,好像说明fileName只能进行了精确匹配。但是不能找到“XXXX.txt”文档,
说明不是精确匹配,而是在索引库中“全文检索.txt”或者“全文检索.txt”,” spring”这些词的索引。
同理:名字都这么麻烦,如果要搜索内容,岂不是更麻烦。所以要进行分词。
下篇文章第一段代码中:使用的是官方推荐的标准分词器
Analyzer analyzer=new StandardAnalyzer();//标准的分词器
分词就是将一句话,或者一段话,或者长词,分成一个一个的词语。比如:“全文检”索:分成:“全文”、“检索”、“全文检索”。
分词干嘛?
分词后,就是对每个词建立索引,比如: “全文”、“检索”、“全文检索”。都建立了索引,那么你搜任意的这三个词语都能找到文档,同理,将文档内容分词,只要输入任意词。就能找到该文档。
怎么分?
分词流程
举例说明:
原文档内容(摘自官网):
Lucene is a Java full-text search engine. Lucene is not a complete
application, but rather a code library and API that can easily be used
to add search capabilities to applications.
分析后得到的词:
lucene、java、full、search、engine。。。。
大小变小写,
标点过滤,
停用词过滤,(is,a 等没有意义的单词或者字母)
引出新概念:语汇单元
lucene、java、full、search、engine等分出来的词叫做语汇单元。叫做term
总结:
1)将原始内容创建为包含域(Field)的文档对象,需要再对域中的内容进行分析,分析成为一个一个的单词。也就是分词
2)每个分出来的单词,就是一个语汇单元,就是term。注意:
3)每个term中包含两部分内容:一部分是文档对象的域名,一部分是term内容,
分词后得到term
不同的域中拆出来的相同的单词,不是同一个语汇单元 (思考为什么)
4)对所有文档分析得出的语汇单元进行索引,索引的目的是为了搜索,最终要实现只搜索被索引的语汇单元从而找到文档对象。
5)创建索引是对语汇单元索引,通过词语找文档,这种索引的结构叫倒排索引结构。
倒排索引结构就是反向索引结构,包括索引和文档两部分,索引即词汇表,它的规模较小,而文档集合较大。
理解倒排序是理解搜索是怎么实现的重要基础(由于比较抽象,难懂,我自己也不懂,暂不继续介绍)
智能推荐
SpringSecurity 学习第三篇 认证
SpringSecurity认证流程 当用户输入账号密码登录时,UserNamePasswordAuthenticationFilter将请求信息封装为Authentication,实现类是UsernamePasswordAuthenticationToken.此时他就是一个待认证的用户信息。 然后这个过滤器会调用AuthenticationManager,AuthenticationManage...
solr第三篇-solr使用
https://lucene.apache.org/solr/guide/7_5/solr-tutorial.html#launch-solr-in-solrcloud-mode 一、hosts和port 默认端口8983 2.本地调用用localhost 二、directory path solr.home = server/solr image.png 三、api example v1 api...
webpack入门第三篇
webpack的教程,持续更新。还是根据官网的入门教程来一步步做的。http://webpack.github.io/docs/tutorials/getting-started/ 1、新建文件夹demo2,进入demo2文件夹,按住shift,然后右键弹出命令行 2、新建文件 content.js 3、新建文件style.css 4、新建文件,entry.js 5、新建文件index.html ...
Spring-IOC控制反转
一.概念 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的...
txt文件上传后直接解析
** 废话不多说,直接上代码 用postman请求数据测试; 完美拿到了数据。...
猜你喜欢
搜索二维矩阵
问题描述: 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-a-2d-matrix 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注...
vue的生命周期
一.概述 vue对象初始化过程中,会执行到beforeCreate,created,beforeMount,mounted 这几个钩子的内容 **beforeCreate **:数据还没有监听,没有绑定到vue对象实例,同时也没有挂载对象 created** **:数据已经绑定到了对象实例,但是还没有挂载对象 beforeMount*** 模板已经编译好了,根据数据和模板已经生成了对应的元素对象,...
学习淘淘商城第四十七课(搜索功能Service实现)
首先我们在taotao-search-interface工程新建一个接口类SearchService,并在接口类中添加一个接口,如下图所示。 接着,我们到taotao-search-service工程添加一个实现类SearchServiceImpl,并实现SearchService接口,...
热压烧结制备AlN/球形碳复相微波衰减材料及其性能
Microwave attenuating material is a kind of absorbing material used to absorb electromagnetic waves in a specific frequency band. It is mainly used in vacuum electronic devices such as radar, early wa...
阈值分割
阈值分割 设置一定的条件,将像素值分为两类或多类,并修改图像的像素值,主要针对灰度图像 注:阈值分割不是二值化,因为阈值分割的结果不是两个值 固定阈值分割(经验阈值) 阈值的方式有五种: 自适应阈值分割 可以看出固定阈值分割在整张图像中应用一个阈值,不能够适用于明暗不均的图像分割。自适应阈值每次取出图像的一小部分计算阈值,使得在一张图像中不同部分使用不同的阈值,可以更好分割图像。 小区域阈值计算方...