Lucene 3.3 学习笔记 1 介绍
2012-04-14 19:17
423 查看
分类: Information retrieval2011-08-30
23:05 498人阅读 评论(0) 收藏 举报
Lucene 3.3 学习笔记 1 Lucene 3.3 学习笔记 1 包架构
------------------------
Lucene的作者说过,Lucene只是一个高效的全文搜索引擎库,而不是一个平台,提供了非常简单的API,使其可以满足用户对全文索引的需求。
http://lucene.apache.org/java/docs/index.html
这里可以下载到最新的Lucene库,其中的wiki是一个不错的学习的地方
http://wiki.apache.org/lucene-java/FrontPage?action=show&redirect=FrontPageEN
目前有很多网站和软件用到了Lucene,如社交网站LinkedIn和苹果的ITunes软件中都用到了Lucene来做实时与全文索引。
这个库提供了索引文档对象的一个抽象,所有的文档对于Lucene来说都是一个Document抽象。
Document => [Field1,Field2,...,FieldN]
Field => [Term1,Term2,...,TermN]
这个库是对文本进行解析,得到相应的Term对象,在Index与Searcher的时候都会用到,在索引过程中,它会对被索引的文件进行解析,而在搜索过程中,它会对查询条件进行解析。
它主要是用来对文档建立索引,对索引进行维护(更新索引,优化索引等),为查询提供访问接口。
它主要是用来存储索引内容的,这里提供了两种存储方式,一种是磁盘存储,另一个是内存存储。
它主要是为用户提供查询接口的,对用户的查询结果进行评估,并返回与用户最相关的查询信息。
主要是为上面的库提供一些I/O或者算法方法的工具类
3. 简单的例子
当你下载了Lucene的可执行包后,会在contrib中有一个中demo的目录,其中就是对Lucene的简单使用,下面对其进行相应的分析。
这里的索引就是对文档建立索引,以方便用户查询,我们看org.apache.lucene.demo.IndexFiles.java就是完成这样的一个工作。下面我们来看一下它的主要的源代码:
[html] view
plaincopy
//~1 这里生成一个索引目录
Directory dir = FSDirectory.open(new File(indexPath));
//~2 生成一个标准的分析器,如果你要用自己的分词器,可以扩展Analyzer与Tokenizer类
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_31);
//~3 这里对索引进行配置
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_31, analyzer);
// 是索引建立一个新的索引还是进行增量索引
if (create) {
// Create a new index in the directory, removing any
// previously indexed documents:
iwc.setOpenMode(OpenMode.CREATE);
} else {
// Add new documents to an existing index:
iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);
}
/ 配置索引的内存,以提高索引效率
// Optional: for better indexing performance, if you
// are indexing many documents, increase the RAM
// buffer. But if you do this, increase the max heap
// size to the JVM (eg add -Xmx512m or -Xmx1g):
//
// iwc.setRAMBufferSizeMB(256.0);
//~4 生成一个索引输出类,用于写了索引内容
IndexWriter writer = new IndexWriter(dir, iwc);
//~5 索引文档
// 这里主要是读出要索引目录中的文件,生成相应的抽象文档对象,
// 然后调用IndexWriter的addDocument或者是updateDocuemtn来建立或者更新索引。
indexDocs(writer, docDir);
// 是否进行索引优化,
// NOTE: if you want to maximize search performance,
// you can optionally call optimize here. This can be
// a costly operation, so generally it's only worth
// it when your index is relatively static (ie you're
// done adding documents to it):
//
// writer.optimize();
//~6 关闭索引写出器
writer.close();
这里的查询主要是对索引好的数据进行查询操作,在org.apache.lucene.demo.SearchFiles.java中可以看到相应的查询代码,部分主要代码如一下:
[html] view
plaincopy
//~1 生成一个索引查询器,输入为索引目录
IndexSearcher searcher = new IndexSearcher(FSDirectory.open(new File(index)));
//~2 生成一个查询条件的分析器
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_31);
//~3 生成一个查询的分析器,主要是对查询条件进行分析,生成相应的Query
QueryParser parser = new QueryParser(Version.LUCENE_31, field, analyzer);
//~4 对查询条件进行分析,产生相应的Query对象
Query query = parser.parse(line);
System.out.println("Searching for: " + query.toString(field));
//~5 调用索引查询对象的search方法进行索引查询,得到查询结果
TopDocs results = searcher.search(query, null, 100);
这里对Lucene做了一个简单的分析,再结合索引与查询的API调用来简单了解一下其使用方法。
23:05 498人阅读 评论(0) 收藏 举报
Lucene 3.3 学习笔记 1 Lucene 3.3 学习笔记 1 包架构
------------------------
1. Lucene介绍
Lucene的作者说过,Lucene只是一个高效的全文搜索引擎库,而不是一个平台,提供了非常简单的API,使其可以满足用户对全文索引的需求。http://lucene.apache.org/java/docs/index.html
这里可以下载到最新的Lucene库,其中的wiki是一个不错的学习的地方
http://wiki.apache.org/lucene-java/FrontPage?action=show&redirect=FrontPageEN
目前有很多网站和软件用到了Lucene,如社交网站LinkedIn和苹果的ITunes软件中都用到了Lucene来做实时与全文索引。
2. Lucene架构包介绍
2.1 文档的一个对象模型抽象库 - Document
这个库提供了索引文档对象的一个抽象,所有的文档对于Lucene来说都是一个Document抽象。Document => [Field1,Field2,...,FieldN]
Field => [Term1,Term2,...,TermN]
2.2 文本解析库 - Analysis
这个库是对文本进行解析,得到相应的Term对象,在Index与Searcher的时候都会用到,在索引过程中,它会对被索引的文件进行解析,而在搜索过程中,它会对查询条件进行解析。
2.3 索引库 - Index
它主要是用来对文档建立索引,对索引进行维护(更新索引,优化索引等),为查询提供访问接口。
2.4 存储库 - store
它主要是用来存储索引内容的,这里提供了两种存储方式,一种是磁盘存储,另一个是内存存储。
2.5 查询库 - search
它主要是为用户提供查询接口的,对用户的查询结果进行评估,并返回与用户最相关的查询信息。
2.6 工具库 - util
主要是为上面的库提供一些I/O或者算法方法的工具类3. 简单的例子
当你下载了Lucene的可执行包后,会在contrib中有一个中demo的目录,其中就是对Lucene的简单使用,下面对其进行相应的分析。
3.1 索引
这里的索引就是对文档建立索引,以方便用户查询,我们看org.apache.lucene.demo.IndexFiles.java就是完成这样的一个工作。下面我们来看一下它的主要的源代码:[html] view
plaincopy
//~1 这里生成一个索引目录
Directory dir = FSDirectory.open(new File(indexPath));
//~2 生成一个标准的分析器,如果你要用自己的分词器,可以扩展Analyzer与Tokenizer类
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_31);
//~3 这里对索引进行配置
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_31, analyzer);
// 是索引建立一个新的索引还是进行增量索引
if (create) {
// Create a new index in the directory, removing any
// previously indexed documents:
iwc.setOpenMode(OpenMode.CREATE);
} else {
// Add new documents to an existing index:
iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);
}
/ 配置索引的内存,以提高索引效率
// Optional: for better indexing performance, if you
// are indexing many documents, increase the RAM
// buffer. But if you do this, increase the max heap
// size to the JVM (eg add -Xmx512m or -Xmx1g):
//
// iwc.setRAMBufferSizeMB(256.0);
//~4 生成一个索引输出类,用于写了索引内容
IndexWriter writer = new IndexWriter(dir, iwc);
//~5 索引文档
// 这里主要是读出要索引目录中的文件,生成相应的抽象文档对象,
// 然后调用IndexWriter的addDocument或者是updateDocuemtn来建立或者更新索引。
indexDocs(writer, docDir);
// 是否进行索引优化,
// NOTE: if you want to maximize search performance,
// you can optionally call optimize here. This can be
// a costly operation, so generally it's only worth
// it when your index is relatively static (ie you're
// done adding documents to it):
//
// writer.optimize();
//~6 关闭索引写出器
writer.close();
3.2 查询
这里的查询主要是对索引好的数据进行查询操作,在org.apache.lucene.demo.SearchFiles.java中可以看到相应的查询代码,部分主要代码如一下:[html] view
plaincopy
//~1 生成一个索引查询器,输入为索引目录
IndexSearcher searcher = new IndexSearcher(FSDirectory.open(new File(index)));
//~2 生成一个查询条件的分析器
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_31);
//~3 生成一个查询的分析器,主要是对查询条件进行分析,生成相应的Query
QueryParser parser = new QueryParser(Version.LUCENE_31, field, analyzer);
//~4 对查询条件进行分析,产生相应的Query对象
Query query = parser.parse(line);
System.out.println("Searching for: " + query.toString(field));
//~5 调用索引查询对象的search方法进行索引查询,得到查询结果
TopDocs results = searcher.search(query, null, 100);
4. 总结
这里对Lucene做了一个简单的分析,再结合索引与查询的API调用来简单了解一下其使用方法。
相关文章推荐
- Lucene 3.3 学习笔记 1 介绍
- Lucene5 学习笔记(2) —— 简单介绍 Lucene 搜索功能和索引的修改、删除
- zookeeper3.3学习笔记2:配置参数介绍
- zookeeper3.3学习笔记2:配置参数介绍
- 5.2.vue入门基础学习笔记-基础指令介绍(表单绑定v-model)
- GDI+学习笔记8-GDI+介绍
- JMeter学习笔记2-图形界面简单介绍
- Nginx学习笔记之Nginx介绍与安装
- Mysql学习笔记1-基本介绍及基本增删改查操作
- JMeter学习笔记7-View Results in Tables 介绍
- C++学习笔记19——顺序容器的介绍
- Lucene 学习笔记(二)——搜索方式(一)
- lucene原理学习笔记(二)
- [学习笔记]百度地图API介绍
- vmware vsphere 5.0 学习笔记(1)-- 产品介绍
- Scrapy 入门学习笔记(1) -- Scrapy 项目搭建与架构介绍
- LUCENE 3.6 学习笔记
- caffe学习笔记3.3--Loss
- Deep Learning Specialization课程笔记——深度学习介绍
- Akka学习笔记:Actors介绍