SpringBoot+Lucene第一篇——引出Lucene

Lucene的学习第一篇——引出Lucene

一:需求场景提出:
1:在指定(10个)不同名字,不同内容的word文档中,进行任意指定搜索。
比如:搜索哪个文档中有:“高富帅”,“吃鸡”。”read”…等词汇:。
2:站内搜索:搜索任意关键词,出来相关内容。论坛,贴吧,淘宝。
3:百度类似的搜索。
4:智联招聘的搜索。
二:分析
常规的搜索,我们是对数据库的内容进行sql查找,匹配从而实现搜索。但是对于以上的问题,数据库如何建表?字段怎么建?内容怎么存?。发现没法建这个表。
1:于是思考出这个问题:
数据库之所以好搜,能搜,那是因为表中的数据,有行有列。具有一致性的结构。固定的格式,限定的长度。这类数据,也就是结构化的数据。
而我们的要搜的内容没有结构性。也不知道长度。非结构化的数据。搜索也是任意指定。数据库不能实现。
2:继续思考:那么非结构化数据怎么办?
程序无非就是代替的人做的事。我们先考虑我们怎么搜索:(以下取场景1进行分析)
1:对于文档中内容搜索,要找到“吃鸡”,我们一个一个打开文档看,从头到尾进行浏览,发现了“吃鸡”,这个文档就有。没发现,这个文档就没有。
当然我们会使用Ctrl+F 进行查找。(Ctrl+F也就是从头到尾进行查找)
这种搜索的方法:叫做顺序扫描。
所以我们写个程序,实现以下功能:
 遍历每个要搜索的文件
 打开word文,实现ctrl+F 指定的内容。有然后拿到该文档的名字,然后标记位置。
 如果文件非常多。使用多线程。
那么会面临以下几个问题:
 操作windows要使用c,
 只能精确查找,不能最大限度匹配。
 此处多线程效率不会提升(甚至会严重降低,思考为什么)
2:顺序扫描,我们没有能力写出代码,那么我们换一种角度思考:
我们在词典中查找“吃”,之所以很快,是因为我们通过拼音,或者部首,直接找到了“吃”,找到了“吃”所在的页数,然后找到了“吃”的位置。
所以只要,我们将内容全部拆成一些词汇,然后建立信息,跟一个词典一样,那么好办了。一切问题都解决了。
面临个问题,一:如何实现拆?二:工作量如此巨大,效率如何?
拆词:使用第三方工具,
拆词之后,一次建立,重复使用(类似字典),一旦建成,功利千秋。
(后期新增数据,动态更新就好了)
三:全文检索
将数据通过拆解,分析,从新组织的,变得有结构化,并将重新结构化的结果保存下来。重新结构化的结果就是索引。我们只需要对索引进行搜索。索引的集合组成一个索引库。

所以全文检索的技术要点:
创建索引
搜索索引
使用技术:Lucene。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kone.wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值