01 lucene基础 北风网项目培训 Lucene实践课程 系统架构

Lucene在搜索的时候数据源可以是文件系统,数据库,web等等。
Lucene的搜索是基于索引,Lucene是基于前面建立的索引之上进行搜索的。

使用Lucene就像使用普通的数据库一样。
Lucene的核心包及其功能说明


Lucene要实现检索,需要有两个关键的环节:第一个环节:索引环节。从不同数据源(文件系统,数据库,web,手工输入等等)收集数据,收集完毕之后通过调用Lucene下面所提供的API来最后把生成的索引写入到索引文件中,这是第一个环节。第二个环节:搜索环节。搜索是建立在生成的索引基础之上进行搜索的。
Lucene的核心包类分为:索引相关的和搜索相关的。
Lucene的核心索引类

中文和英文各有一套停用词。

谷歌搜索一直错了

Document可以当做是关系数据库中的一条记录,在实际的处理过程中一个记录下面就可以包含多个字段。在实际的处理过程中的,Docuemnt的作用就是处理文本,把处理好的文本通过IndexWriter写入到索引文件中,这是Document类的作用。Field相当于关系型数据库中的列或者是字段,而关系型数据库的字段类型比较丰富,在这里Field类型的数据类型没有那么丰富。早先的版本Field在Lucene下面提供了四种类型,最新的版本中它是通过两个参数配合来实现的。Field类型的确认是通过Field下面两个属性:一个是Index,一个是Store。两个属性下面的对应的常量交叉配合来确定的。

Store有三个常量:YES,NO,COMPRESS。在实际使用过程中,通过Index和Store两个属性的相互配合,可以有多个Field类型来出现。例如,Index:ANALYZED,Store:YES表示要进行分词处理,要进行索引、存储。Index:ANALYZED,Store:NO表示进行分词处理,进行索引但是不进行存储操作。
通过Index和Store相互配合,可以出现多个Field类型来供我们选择和使用,这和原先Field提供的四种类型就是说这比早先版本的Lucene所提供的四种类型的要丰富的多。

IndexSearcher是索引式检索的基础:要先建立完索引之后,才能进行检索操作。Hits它的地位相当于在关系型数据库中进行检索之后返回的ResultSet字符集。

Lucene内部实现简析








Lucene的系统架构,了解Lucene的核心包和核心类,了解Lucene的内部实现的基本原理。
01 lucene基础 北风网项目培训 Lucene实践课程 系统架构的更多相关文章
- 01 lucene基础 北风网项目培训 Lucene实践课程 索引
在创建索引的过程中IndexWriter会创建多个对应的Segment,这个Segment就是对应一个实体的索引段.随着索引的创建,Segment会慢慢的变大.为了提高索引的效率,IndexWrite ...
- 01 lucene基础 北风网项目培训 Lucene实践课程 Lucene概述
lucene-core-2.4.1.jar是lucene开发的核心jar包,lucene-analyzers-2.4.1.jar也是必不可少的.lucene-highlighter-2.4.1.jar ...
- TOP100summit2017:网易云通信与视频CTO赵加雨:外力推动下系统架构的4个变化趋势
壹佰案例:很荣幸邀请到您成为第六届壹佰案例峰会架构专场的联席主席,您曾深度参与Cisco Jabber,Webex Meeting, Cisco Spark等多项分布式实时通信类产品的架构与研发, ...
- Lucene基础(1)
下一篇: Lucene基础(2) 一.Lucene介绍 http://www.kailing.pub/index/columns/colid/16.html Documentation:http:// ...
- [全文检索]Lucene基础入门.
本打算直接来学习Solr, 现在先把Lucene的只是捋一遍. 本文内容: 1. 搜索引擎的发展史 2. Lucene入门 3. Lucene的API详解 4. 索引调优 5. Lucene搜索结果排 ...
- Lucene基础(2)
上一篇:Lucene基础(1) 一.Lucene术语 Document, Field, Term, Query, Analyzer相信在其中大多数在之前已经理解了...对其中部分概念详细说明 Docu ...
- 【转】一个lucene的官网例子
创建索引: import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import jav ...
- Lucene基础(一)--入门
Lucene介绍 lucene的介绍,这里引用百度百科的介绍Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引 ...
- 后端技术杂谈3:Lucene基础原理与实践
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
随机推荐
- lapis 数据库配置
备注: 目前支持 postgresql .mysql (实际使用大家可以尝试用下tidb.CockroachDB) 1. pg数据库配置 // config.lua local config = ...
- 【转】电信100M光纤无线下载速度仅为5MB/秒的困惑
原文网址:http://itbbs.pconline.com.cn/50463999.html 在江苏电信官方测速网站测速的.1.光猫F460有线连接至笔记本,下载速度为12MB/秒左右:2.F460 ...
- xml获取属性值的方法
sSqlstr += string.Format(@" and businessattr.value('(/Arch/Field[@Name=""发文单位$$" ...
- 『备忘录』elasticsearch 去重分页查询
一开始数据结构设计的很复杂,又是父子关系又是嵌套关系,结果发现不能通过简单的查询得到想要的结果:比如一个商店只出现一件符合条件的商品,弄得查询语句就变成这样了 curl -XPOST http://l ...
- UEFI 启动GPT分区 Win10和Ubuntu16.04双系统安装
测试机器:联想小新锐7000 工具:UltraISO 系统下载 为Ubuntu分配空间 右键“我的电脑”——>“管理”——>“磁盘管理”,(win+x快捷键)选择一个有很大空闲空间的磁盘, ...
- easyui datagrid 格式化列显示两位小数、千分位
{ field: , formatter: function (value, row, index) { if (row != null) { ); } } }, //二位小数.千分位 { field ...
- 【BZOJ】1007: [HNOI2008]水平可见直线(凸包)
题目 传送门:QWQ 分析 在下面维护一个凸壳 好久没写博客了...... 代码 #include <bits/stdc++.h> using namespace std; ; ,INF= ...
- JavaScript中的可枚举属性与不可枚举属性
在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for…in查找遍历到. 一.怎么判断属性是否可枚举 js中基本包 ...
- OD 实验(十四) - 内嵌补丁
内嵌补丁(inline patch): 内嵌补丁指在程序文件中把补丁代码写入文件里面达到破解的目的 如果修改某行语句会影响后面的语句,例如某语句占用 3 个字节,修改完变为 5 个字节,会覆盖后面的语 ...
- django之设置缓存
缓存 一句话总结:缓存可以对view.模板.数据进行缓存可以设置缓存在不同的地方(本地内存.redis.系统文档)可以为服务器节省性能.减少用户等待时间. 对于中等流量的网站来说,尽可能地减少开销是必 ...