通过一个自建的索引案例,分几篇记录Lucene使用中的心得和存在的问题。
本文的目的是能让初学者快速学会Lucene的使用,所以所涉及的原理都会十分粗浅,而不讨论更深层次的实现过程。
一、什么是Lucene
首先看一下摘自百度百科的定义:“Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。”我们因此可以得知Lucene是一个开源程式库,用于建立索引并通过建立好的索引进行查询,得到相应的结果。
二、Lucene与倒排索引
首先需要理解是的倒排索引,与倒排索引相对应的是正排索引。
正排索引
假设现在我们有m篇文档,在m篇文档中一共有n个关键词。此时我们可以将m篇文档看做是key,而n个关键词看做是value。正排索引就是通过key来找到value的过程。
结合图片来讲,针对m个文本,可以得知每个文本里面所包含的关键词,我们输入文本的序号,得到文本中关键词的过程就叫做正排索引。
倒排索引
而倒排索引则相反,假设我们已知m个文本,以及每个文本中包含的n个关键词的相关信息。此时,我们输入关键词,得到包含这个关键词的文本的过程就叫做倒排索引。如果说正排索引是从整体中提取出局部,那么倒排索引就是从局部反推出整体的过程。(这种说法并不严谨,但是便于理解。)
三、Lucene的实例讲解
下面用一个实例来简单说明如何使用Lucene来建立索引并进行查询。
1.任务目标:
现有若干个文本,要求输入关键字,返回包含关键字的句子,这个句子所属的文本以及这个句子所处的位置是摘要部分还是正文部分。
2.任务分解:
1.对文本进行解构,将文本的文件名、摘要、正文部分的内容分别放进不同的字符串或列表里
2.针对文件名、摘要、正文等信息分别建立域(Field),保存到索引文档中
3.调用索引,输入关键字,返回包含关键词的句子、句子的所属部分和句子的所属文本
Lucene的实现过程如图:
3.代码实现:
标签:倒排,关键词,Lucene,索引,初学者,7.4,正排,文本 From: https://www.cnblogs.com/william91877/p/15170083.html