没有合适的资源?快使用搜索试试~ 我知道了~
首页Lucene全文检索原理与代码详解
Lucene全文检索原理与代码详解
需积分: 0 0 下载量 77 浏览量
更新于2024-06-30
收藏 4.74MB PDF 举报
本文档是对Lucene全文检索技术的深入学习总结,分为两部分:原理篇和代码分析篇。首先,第一章"全文检索的基本原理"阐述了全文检索的核心概念。总论部分介绍了全文检索的基本概念,强调其在信息检索中的重要性。在索引的构建过程中,文档被分解成词元,通过Tokenizer处理后,进一步经过LinguisticProcessor进行语言处理,生成Term。Term被传递给Indexer,用于创建字典并进行排序,最后形成文档倒排列表(PostingList)。 索引的搜索流程涉及用户输入查询,通过词法分析识别关键词,语法分析构建查询树,然后在索引中查找匹配的文档。搜索结果会根据文档与查询的相关性进行排序,这包括计算Term权重和应用向量空间模型(VSM)来评估文档的相关度。 第二章介绍了Lucene的整体架构,展示了其各个组件如查询解析器、搜索器、排序器等的协作工作方式。这部分有助于理解Lucene作为一个完整的搜索引擎系统是如何运作的。 第三章深入剖析了Lucene的索引文件格式,包括基本概念、不同类型的索引结构以及规则,如前缀后缀规则、差值规则等。这些规则对于理解索引的高效存储和查询性能至关重要。 通过本篇文章的学习,读者可以全面掌握Lucene从基础原理到实际操作的各个环节,这对于从事信息检索、搜索引擎开发或对Lucene技术感兴趣的开发者来说是一份宝贵的参考资料。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/86314288/bg10.jpg)
16
到相同的转换。
语言处理组件(linguistic processor)的结果称为词(Term)。
在我们的例子中,经过语言处理,得到的词(Term)如下:
“student”,“allow”,“go”,“their”,“friend”,“allow”,“drink”,“beer”,“my”,“friend”,“jerry”,
“go”,“school”,“see”,“his”,“student”,“find”,“them”,“drink”,“allow”。
也正是因为有语言处理的步骤,才能使搜索 drove,而 drive 也能被搜索出来。
第四步
第四步第四步
第四步:
::
:将得到的词
将得到的词将得到的词
将得到的词(Term)传给索引组件
传给索引组件传给索引组件
传给索引组件(Indexer)。
。。
。
索引组件(Indexer)主要做以下几件事情:
1. 利用得到的词
利用得到的词利用得到的词
利用得到的词(Term)创建一个字典
创建一个字典创建一个字典
创建一个字典。
。。
。
在我们的例子中字典如下:
Term Document ID
student 1
allow 1
go 1
their 1
friend 1
allow 1
drink 1
beer 1
my 2
friend 2
![](https://csdnimg.cn/release/download_crawler_static/86314288/bg11.jpg)
17
jerry 2
go 2
school 2
see 2
his 2
student 2
find 2
them 2
drink 2
allow 2
2. 对字典按字母顺序进行排序
对字典按字母顺序进行排序对字典按字母顺序进行排序
对字典按字母顺序进行排序。
。。
。
Term Document ID
allow 1
allow 1
allow 2
beer 1
drink 1
drink 2
find 2
friend 1
friend 2
![](https://csdnimg.cn/release/download_crawler_static/86314288/bg12.jpg)
18
go 1
go 2
his 2
jerry 2
my 2
school 2
see 2
student 1
student 2
their 1
them 2
3. 合并相同的词
合并相同的词合并相同的词
合并相同的词(Term)成为文档倒排
成为文档倒排成为文档倒排
成为文档倒排(Posting List)链表
链表链表
链表。
。。
。
![](https://csdnimg.cn/release/download_crawler_static/86314288/bg13.jpg)
19
在此表中,有几个定义:
Document Frequency 即文档频次,表示总共有多少文件包含此词(Term)。
Frequency 即词频率,表示此文件中包含了几个此词(Term)。
所以对词(Term) “allow”来讲,总共有两篇文档包含此词(Term),从而词(Term)后面的文档链
表总共有两项,第一项表示包含“allow”的第一篇文档,即 1 号文档,此文档中,“allow”出现
了 2 次,第二项表示包含“allow”的第二个文档,是 2 号文档,此文档中,“allow”出现了 1
次。
到此为止,索引已经创建好了,我们可以通过它很快的找到我们想要的文档。
而且在此过程中,我们惊喜地发现,搜索“drive”,“driving”,“drove”,“driven”也能够被搜到。
因为在我们的索引中,“driving”,“drove”,“driven”都会经过语言处理而变成“drive”,在搜索
时,如果您输入“driving”,输入的查询语句同样经过我们这里的一到三步,从而变为查询
“drive”,从而可以搜索到想要的文档。
![](https://csdnimg.cn/release/download_crawler_static/86314288/bg14.jpg)
20
四
四四
四、
、、
、如何对索引进行搜索
如何对索引进行搜索如何对索引进行搜索
如何对索引进行搜索?
??
?
到这里似乎我们可以宣布“我们找到想要的文档了”。
然而事情并没有结束,找到了仅仅是全文检索的一个方面。不是吗?如果仅仅只有一个或十
个文档包含我们查询的字符串,我们的确找到了。然而如果结果有一千个,甚至成千上万个
呢?那个又是您最想要的文件呢?
打开 Google 吧,比如说您想在微软找份工作,于是您输入“Microsoft job”,您却发现总共有
22600000 个结果返回。好大的数字呀,突然发现找不到是一个问题,找到的太多也是一个
问题。在如此多的结果中,如何将最相关的放在最前面呢?
当然 Google 做的很不错,您一下就找到了 jobs at Microsoft。想象一下,如果前几个全部是
“Microsoft does a good job at software industry…”将是多么可怕的事情呀。
如何像 Google 一样,在成千上万的搜索结果中,找到和查询语句最相关的呢?
如何判断搜索出的文档和查询语句的相关性呢?
这要回到我们第三个问题:如何对索引进行搜索?
搜索主要分为以下几步:
剩余526页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://profile-avatar.csdnimg.cn/c15bcd3b714042788edbadc9b52abdaf_weixin_35817967.jpg!1)
虚伪的小白
- 粉丝: 25
- 资源: 321
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 中国微型数字传声器:技术革新与市场前景
- 智能安防:基于Hi3515的嵌入式云台控制系统设计
- 手机电量低时辐射真增千倍?解析手机使用谣言
- 56F803型DSP驱动的高精度大功率超声波电源控制策略研究
- ARM与GPRS结合的远程监测系统设计
- GPS与RFID技术结合的智能巡检系统设计
- CPLD驱动的低功耗爆炸场温度测试系统设计
- 基于FPGA的智能驱动控制系统:可扩展设计与工业网络协议
- 基于ATmega128和CH374的嵌入式USB接口设计
- 基于AT89C52的温度补偿超声波测距仪:高精度设计与应用
- MSP430F448单片机在交流数字电压表中的应用
- 提升变频器应用效率的12项实用技巧
- STM32F103在数字电镀电源并联均流系统中的应用
- PSpice仿真下的升压开关电源设计:拓扑分析与CCM稳定性提升
- 轻巧高效:MSP430主导的低成本无线传感器网络节点设计
- FPGA在EDA/PLD中实现LVDS接口的应用解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)