03.什么是Lucene全文检索的原理01
全文检索的原理:查询速度快,精准度高,可以根据相关度进行排序。它的原理是:先把内容分词,分词之后建索引。
Lucene是apache下的一个开放源代码的全文检索引擎工具包。
提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为了软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能。



全部都建索引的话看不出效果来。先是根据英文的文档建立索引,因为它这里涉及到一个中文分析器的问题。分开两部分来看,一部分是创建索引,一部分是查询索引。

使用我们的文件流就可以读取这些原始文档,
1.获得文档
磁盘上的文件,直接使用文件流来读取。搜索引擎搜索的这些内容都在互联网上,互联网的网站非常多,每个网站的网页也非常多,内容也非常多,如何获得这些文档啊?在讲WebService的时候讲过HttpClient,HttpClient可以做爬虫程序,这个爬虫程序就是来抓取互联网的这些网页的,HttpClient可以模拟浏览器,浏览器访问一个服务器返回的是html,我根据这个html再去分析里面的a标签,就可以链到其他的网页了。如此我可以进行递归,先是访问一个网站,比如说先访问新浪网首页,新浪网首页给我返回一个html,这个html我把其中的a标签解析出来,a标签对应一个链接,把把这个链接扩散到我的队列里面,我再用httpClient再去访问我这个链接,又返回一个html。如此就可以通过一个点扩展到整个互联网。像网易或者是新浪它还有很多链接链接到其他的网站上,其他网站还有别的链接链接到其他网站上。这样我就可以通过一点来搜索整个互联网。这样就相当于挨个去爬取这些网站的网页啊。这就是爬虫程序的原理。
搜索引擎如何获得原始文档:

Solr是基于Lucene的全文检索的服务器,支持把数据从关系型数据库中导到我们的索引数据库中。
jsoup和解析XML的dom4j差不多,jsoup是解析html文档的,html只是一个文本文档而已,你还要使用jsoup去解析它。
在Lucene里面,每一个文本文档对应一个Document,你可以理解为数据库中的一条记录,我们每一个文档可以看做是数据库表中的一条记录。
2、创建文档对象。
文档不是白创建的,文档里面包含一个一个的域,这个域就是Field,学数据库也学过Field,不过数据库的Field是字段。在全文检索中Field也可以理解为一个字段。一个Document对应多个字段Field,一个文档它是一个记录。最直观的就是:一个文件的名称它是一个域了,一个文件的内容它也是一个域了,两个域了是吧。文件的大小也是一个指标,我们也把它看做是一个域。还有一个文件的路径。路径也是其中一个指标,描述了我们的文档,还有其他的你想放什么就放什么。这就是我们文档中的域。这个文档中的域,数据库中的字段不能重复,重复就会报错,表就建立不了了。在全文检索的文档中,可以有多个相同的域,它不管你,你可以重名,甚至内容相同也没有关系。
一个文档相当于数据库中的一条记录,一个文档中有多个域(Field),域类似于数据库的字段。注意:在Lucene的文档对象中可以有同名域。
03.什么是Lucene全文检索的原理01的更多相关文章
- Lucene全文检索技术
Lucene全文检索技术 今日大纲 ● 搜索的概念.搜索引擎原理.倒排索引 ● 全文索引的概念 ● 使用Lucene对索引进行CRUD操作 ● Lucene常用API详解 ● ...
- lucene全文检索基础
全文检索是一种将文件中所有文本与检索项匹配的文字资料检索方法.比如用户在n个小说文档中检索某个关键词,那么所有包含该关键词的文档都返回给用户.那么应该从哪里入手去实现一个全文检索系统?相信大家都听说过 ...
- spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例
下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...
- lucene 全文检索工具的介绍
Lucene:全文检索工具:这是一种思想,使用的是C语言写出来的 1.Lucene就是apache下的一个全文检索工具,一堆的jar包,我们可以使用lucene做一个谷歌和百度一样的搜索引擎系统 2. ...
- Elasticsearch Lucene 数据写入原理 | ES 核心篇
前言 最近 TL 分享了下 <Elasticsearch基础整理>https://www.jianshu.com/p/e8226138485d ,蹭着这个机会.写个小文巩固下,本文主要讲 ...
- Apache Lucene(全文检索引擎)—创建索引
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...
- Nmap原理-01选项介绍
Nmap原理-01选项介绍 1.Nmap原理图 Nmap包含四项基本功能:主机发现/端口扫描/版本探测/操作系统探测.这四项功能之间存在大致的依赖关系,比如图片中的先后关系,除此之外,Nmap还提供规 ...
- 使用Lucene全文检索并使用中文版和高亮显示
使用Lucene全文检索并使用中文版和高亮显示 中文分词需要引入 中文分词发的jar 包,咱们从maven中获取 <!-- lucene中文分词器 --> <dependency&g ...
- Lucene 全文检索 Lucene的使用
Lucene 全文检索 Lucene的使用 一.简介: 参考百度百科: http://baike.baidu.com/link?url=eBcEVuUL3TbUivRvtgRnMr1s44nTE7 ...
随机推荐
- wordpress重力表单实时提醒功能教程(亲测可用)
小七在写项目的时候遇到了一个需求:用户在填写完成表单的各个字段后要提交到后台,但是后台程序狗不能一直守着后台吧,程序狗也需要陪女朋友啊,好做一个即时提醒的功能吧,再也不担心用户提交的内容被错过了,第一 ...
- Java多线程编程核心技术,第一章
1,Java并发--详解this与Thread.currentThread()的区别:https://blog.csdn.net/championhengyi/article/details/7666 ...
- undefined vs. null
undefined vs. null 一.相似性 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别. var a = undefined; var a = n ...
- ubuntu :安装一个方便的终端工具,Guake Terminal
前言: 刚刚用ubuntu不久,就想找点新鲜玩意儿,提高linux能力,当然啦,我喜欢折腾,今天就碰到Guake Terminal这个玩意儿,它的功能很简单,就是一个终端,按F12就出现,再按就隐藏, ...
- Oracle拆分字符串函数与执行调用
本函数可以将“目标字符串”以“指定字符串”进行拆分,并通过表结构返回结果.代码如下: ); CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHA ...
- (转)Inno Setup入门(十五)——Inno Setup类参考(1)
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250955 nno setup脚本能够支持许多的类,这些类使得安装 ...
- windows平台最简单的rtmp/hls流媒体服务器
feature: rtmp/hls live server for windows, double click to run,don't need config. run and quit: doub ...
- appium在android7.0上无法启动问题
前言 由于最近很多android手机升级到7.0系统了,有些小伙伴的appium版本用的还是1.4版本,在运行android7.0的app自动化时候遇到无法启动问题:WebDriverExceptio ...
- PAT甲级目录
树(23) 备注 1004 Counting Leaves 1020 Tree Traversals 1043 Is It a Binary Search Tree 判断BST,BST的性质 ...
- Java 版本6下载大全
Oracle 官方 JDK6 下载地址: 基本包含所有的JDK6版本. 需要登注册相应的账户登录到Oracle官网~ http://www.oracle.com/technetwork/java/ja ...