Lucene的学习第三篇 — 分词

Lucene创建索引—分词,分词主要介绍这几个问题

 分词是什么?
 分词干嘛?
 分词怎么分?

例如:我们能找到aaabbb.txt文档,但是不能找到aaabbb文档,好像说明fileName只能进行精确匹配。但是不能找到XXXX.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) 创建索引是对语汇单元索引,通过词语找文档,这种索引的结构叫倒排索引结构

倒排索引结构就是反向索引结构,包括索引和文档两部分,索引即词汇表,它的规模较小,而文档集合较大

理解倒排序是理解搜索怎么实现的重要基础

上一篇 Lucene的学习第二篇 — Lucene的流程与构建文档对象
下一篇 SpringBoot+Lucene第四篇 — 入门代码
目录
文章列表
1 微信小程序实现摇一摇功能
微信小程序实现摇一摇功能
2
React Native学习之DrawerLayoutAndroid组件
React Native学习之DrawerLayoutAndroid组件
3
OKHttp3学习之二:HTTP 协议简介
OKHttp3学习之二:HTTP 协议简介
4
Android照片获取框架TakePhoto使用流程
Android照片获取框架TakePhoto使用流程
5
Vue使用axios实现登录验证拦截及页面跳转
Vue使用axios实现登录验证拦截及页面跳转
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。