lucene 基础知识点
部分知识点的梳理,参考<lucene实战>及网络资料
1、基本概念
lucence 可以认为分为两大组件:
1)索引组件
a、内容获取:即将原始的内容材料,可以是数据库、网站(爬虫)、文本转换为lucence的Docment
Docment 为若干个带值得域
b、文档分析:利用分词器对文档进行分析;
c、建立索引:根据文档分析的结构建立索引文件;
2)搜索组件
a、建立查询:即将用户请求转换为搜索引擎支持的查询对象格式;
b、执行搜索查询;并反馈Document结果集;
2、官方样例代码分析
**索引组件部分工作
1)创建一个包含某个分词器的IndexWriter
private IndexWriter writer;
writer = new IndexWriter(IndexDir, new StandardAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED);
2)遍历被索引的文件(即原始内容)将其转换为Document
Docment doc = new Docment();
doc.add(new Field("contents", new FileReader(f));
doc.add(new Field("filename"), f.getName(), Field.Store.Yes, Field.Index.NOT_ANALYZED);
3)针对该Docment创建索引
writer.addDocment(doc);
**搜索组件部分工作
1)打开索引文件
IndexSearcher is = new IndexSearcher(IndexDir);
2)创建一个查询对象
QueryParser parser = new QueryParser(Version.LUCENE_30, "contents", new StandardAnalyzer());
Query query = parser("要找的查询关键字");
3)执行查询并返回结果
TopDocs hits = is.search(query, 10);
3、lucene的核心类
1、IndexWriter :提供对索引文件的写入操作;
2、Directory: 抽象类,索引的存放位置
3、Analyzer: 分词器,由IndexWriter的构造函数指定
//IK 中文分词
Analyzer analyzer = new IKAnalyzer();
4、Document: 虚拟文件,由一些Field的集合;
5、Field: 域,lucene实际搜索值的地方
6、IndexSearcher:搜索由IndexWriter创建的索引;
7、Term:搜索的基本单元,与Field类似
8、Query:查询子类
//多字段查询
String [] stringQuery={"内容1","内容2"};
String[] fields={"content","title"};
Occur[] occ={Occur.SHOULD,Occur.SHOULD};
Query query = MultiFieldQueryParser.parse(stringQuery, fields, occ, analyzer);
9、TopDocs: 指针容器,指向结果集中的文档
lucene 基础知识点的更多相关文章
- fastclick 源码注解及一些基础知识点
在移动端,网页上的点击穿透问题导致了非常糟糕的用户体验.那么该如何解决这个问题呢? 问题产生的原因 移动端浏览器的点击事件存在300ms的延迟执行,这个延迟是由于移动端需要通过在这个时间段用户是否两次 ...
- .NET基础知识点
.NET基础知识点 l .Net平台 .Net FrameWork框架 l .Net FrameWork框架提供了一个稳定的运行环境,:来保障我们.Net平台正常的运转 l 两种交 ...
- JavaScript 开发者经常忽略或误用的七个基础知识点(转)
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- JavaScript 开发者经常忽略或误用的七个基础知识点
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- JavaScript开发者常忽略或误用的七个基础知识点
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- JavaScript语言基础知识点图示(转)
一位牛人归纳的JavaScript 语言基础知识点图示. 1.JavaScript 数据类型 2.JavaScript 变量 3.Javascript 运算符 4.JavaScript 数组 5.Ja ...
- JavaScript 语言基础知识点总结
网上找到的一份JavaScript 语言基础知识点总结,还不错,挺全面的. (来自:http://t.cn/zjbXMmi @刘巍峰 分享 )
- c语言学习之基础知识点介绍(三):scanf函数
本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...
- c语言学习之基础知识点介绍(二):格式化控制符和变量的补充
上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...
随机推荐
- 理解Maven中的SNAPSHOT版本和正式版本
Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...
- Java数据库连接技术——JDBC
大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...
- PHP源码分析-变量
1. 变量的三要素变量名称,变量类型,变量值 那么在PHP用户态下变量类型都有哪些,如下: // Zend/zend.h #define IS_NULL 0 #define IS_LONG 1 #de ...
- 利用CSS中的:after、: before制作的边三角提示框
小颖昨天分享了一篇参考bootstrap中的popover.js的css画消息弹框今天给大家再分享一篇使用:before和:after伪元素画消息弹框的CSS. 画出来是介个酱紫的: 有没有觉得画的萌 ...
- 最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)
在项目开发中,除了对数据的展示更多的就是对文件的相关操作,例如文件的创建和删除,以及文件的压缩和解压.文件压缩的好处有很多,主要就是在文件传输的方面,文件压缩的好处就不需要赘述,因为无论是开发者,还是 ...
- Spring cache简单使用guava cache
Spring cache简单使用 前言 spring有一套和各种缓存的集成方式.类似于sl4j,你可以选择log框架实现,也一样可以实现缓存实现,比如ehcache,guava cache. [TOC ...
- NSURLSession详解
导语 现在NSURLConnection在开发中会使用的越来越少,iOS9已经将NSURLConnection废弃,现在最低版本一般适配iOS7,所以也可以使用. NSURLConnection相对于 ...
- [Hadoop in Action] 第6章 编程实践
Hadoop程序开发的独门绝技 在本地,伪分布和全分布模式下调试程序 程序输出的完整性检查和回归测试 日志和监控 性能调优 1.开发MapReduce程序 [本地模式] 本地模式 ...
- mysql 5.7中的用户权限分配相关解读!
这篇文章主要介绍了MySQL中基本的用户和权限管理方法,包括各个权限所能操作的事务以及操作权限的一些常用命令语句,是MySQL入门学习中的基础知识,需要的朋友可以参考下 一.简介 各大帖子及文章都会讲 ...
- 在Linux配置Nginx web服务器步骤
系统环境:centos7 需要软件:nginx-1.3.16.tar.gz libevent-2.0.21-stable.tar.gz Pcre 和 pcre-devel nginx下载地址:h ...