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) 创建索引是对语汇单元索引,通过词语找文档,这种索引的结构叫倒排索引结构

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

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

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/05/03/lucene-learning-part-3-partitions/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Lucene的学习第三篇 — 分词
Lucene创建索引—分词,分词主要介绍这几个问题  分词是什么?  分词干嘛?  分词怎么分? 例如:我们能找到aaabbb.txt文档,但是不能找到aaabbb文档,好像……
<<上一篇
下一篇>>
文章目录
关闭
目 录