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。

SpringBoot+Lucene第一篇——引出Lucene相关推荐

  1. 3、SpringBoot解密第一篇

    SpringBoot解密第一篇 一.感受SpringBoot Starter 1.SpringBoot特性的优点有哪些? 引用官方: Spring Boot makes it easy to crea ...

  2. Lucene第一篇【介绍Lucene、快速入门】

    tags: Lucene 什么是Lucene?? Lucene是apache软件基金会发布的一个开放源代码的全文检索引擎工具包,由资深全文检索专家Doug Cutting所撰写,它是一个全文检索引擎的 ...

  3. SpringBoot:第一篇 新建spring boot 应用

    1.idea 新建spring boot项目 File-> new Project 2.web 应用---选择web应用 3.Controller package com.example.dem ...

  4. lucene 第一天

    Lucene/Solr   第一天 1. 课程计划 Lucene介绍 全文检索流程介绍 a) 索引流程 b) 搜索流程 Lucene入门程序 a) 索引实现 b) 搜索实现 分词器 a) 分词介绍 b ...

  5. springboot springcloud区别_SpringCloud微服务全家桶-第一篇!为什么要用微服务

    从今天开始,学习SpringCloud微服务全家桶. 一.引导 1.什么是微服务? 2.微服务之间是如何独立通讯的 3.springCloud和Dubbo有哪些区别? 4.什么是服务熔断?什么是服务降 ...

  6. Java微服务篇3——Lucene

    Java微服务篇3--Lucene 1.数据分类 1.1.结构化数据 具有固定格式或有限长度的数据,如数据库,元数据等 常见的结构化数据也就是数据库中的数据,在数据库中搜索很容易实现,通常都是使用 s ...

  7. Lucene第一讲——概述与入门

    一.概述 1.什么是Lucene? Lucene是apache下的一个开源的全文检索引擎工具包. 它为软件开发人员提供一个简单易用的工具包(类库),以方便的在目标系统中实现全文检索的功能. 2.能干什 ...

  8. SpringBoot SpringBoot 基础篇(第一篇) 第2章 SpringBoot 全局配置 2.2 yaml 文件

    SpringBoot [千锋教育java教程SpringBoot2全套,springboot快速入门到项目实战视频教程] SpringBoot 基础篇(第一篇) 第2章 SpringBoot 全局配置 ...

  9. ElasticSearch入门 第一篇:Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

最新文章

  1. 【宋红康学习日记11】Object类与equals方法
  2. powershell查看mysql密码_使用Windows PowerShell从数据库导入用户
  3. STM32 TIMER初始化步骤
  4. 解决ASP.NET上传文件大小限制
  5. redis基础整理(转载+与python结合)
  6. 设置与读取C#控制台应用程序Main函数中的参数args
  7. red hat linux yum,Red Hat Enterprise Linux(RHEL)中yum的repo文件详解
  8. Xshell连接mysql数据库乱码问题解决思路总结
  9. python判断ip能否ping通_python 检查IP是否能ping通,并且分别导入两个文件
  10. SQL Server提取字段中的所有数字
  11. 最适合写python程序的软件
  12. 浅谈人工智能 | 语音识别面面观
  13. httpwatch使用_使用PHP#2自动化HTTPWatch
  14. Pytorch iter问题
  15. 一个转来的简单T9输入法
  16. 2019java学习路线图
  17. fedora如何下载软件
  18. 江南大学计算机科学考研书目,2019江南大学计算机考研初试科目、参考书目、复试线...
  19. 郑莉老师c++第五版+b站视频 学习笔记
  20. 计算机网络体系结构-移动IP

热门文章

  1. 安卓子系统(WSA)2301.40000.4.0发布
  2. JVM II(Java虚拟机,Java Virtual Machine)
  3. 微信小程序图片高度按照图片真实宽高比自适应
  4. (DT系列三)系统启动时, dts 是怎么被加载的
  5. Color Blending
  6. 新手小白该如何真正起步做跨境电商独立站?
  7. 一种安全高效的文件传输协议设计
  8. 基于nbiot在onenet平台的一个智能停车场系统
  9. 硬质合金牌号及切削刀片型号的表示方法
  10. Linux基础学习之Day7-6-Mount 挂载详解