Lucene搜索引擎开发
第一次阅读:2012-12-28
可以使用Lucene
开发搜索引擎系统,目前最为著名的是
Nutch
。
建立索引代码分析:
Directory directory = FSDirectory.
open
(
new
File(
"F:\\Lucene\\example\\index01"
));
/***----------------建立索引存放的位置目录
-----------------------------------------------------------------***/
IndexWriter writer =
new
IndexWriter(directory,
new
IndexWriterConfig(Version.
LUCENE_36
,
new
StandardAnalyzer(Version.
LUCENE_36
)));
/***----------------设置
Lucene
版本和分词器
----------------------------------------------------------------***/
Document doc =
new
Document();
/***----------------建立
Document
对象
---------------------------------------------------------------------***/
doc.add(
new
Field(
"
field
"
,
"
content
"
,Field.Store.
YES
,Field.Index.
ANALYZED
));
/***----------------将文本加入
Document
对象
(field
表示域名,
content
表示文本内容
)----------------------***/
writer.addDocument(doc);
/***----------------将
Document
对象写入索引
---------------------------------------------------------------***/
搜索代码分析:
/***----------------第一步:获取
Searcher-----------------------------------------------------------------***/
IndexReader reader =
null
;
Directory directory = FSDirectory.
open
(
new
File(
"F:\\Lucene\\example\\index01"
));
if
(reader==
null
)
reader = IndexReader.
open
(directory);
else
{
IndexReader tr = IndexReader.
openIfChanged
(reader);
if
(tr!=
null
)
{
reader.close();
reader=tr;
}
}
IndexSearcher searcher =
new
IndexSearcher(reader);
/***----------------第二步:创建
Query
(不同的搜索会创建不同的
Query
或者是其他组合)
-------------***/
Query
query =
new
FuzzyQuery(
new
Term(
"name"
,
"make"
));
/***----------------第三步:创建
TopDocs
,获取结果
---------------------------------------------------------***/
TopDocs tds = searcher.search(query, 10);
for
(ScoreDoc sd : tds.
scoreDocs
)
{
Document doc = searcher.doc(sd.
doc
);
System.
out
.println(doc.get(
"attach"
));
}
索引的建立具体讲解:
1,建立索引的基本过程
A:建立索引器
IndexWriter
,这相当于一本书的框架。
B:建立文档对象
Document
,这相当于一片文章。
C:建立信息字段对象
Field
,这相当于一片文章中的不同信息(标题,正文等)。
D:将
Field
添加到
Document
里面。
E:就
Document
添加到
IndexWriter
里面。
F:关闭索引器
IndexWriter
。
基本步骤:
A:创建
Field
,将文章的不同信息包装起来。
B:将多个
Field
组织到一个
Document
里面,这样就完成了对一篇文章的包装。
C:将多个
Document
组织到一个
IndexWriter
里面,也就是将多个文章组织起来,最终形成索引。
2,
Field
Field field = new Field(Field名称,Field内容,存储方式,索引方式);
Field名称:
通常指字段名
Field内容:
通常指字段内容
存储方式:
Field.Store.NO不存储
Field.Store.YES完全存储
Field.Store.COMPRESS压缩存储 (注:对于文章正文一般采用不存储或者压缩存储)
索引方式:
Field.Index.NO不索引
Field.Index.NO_NORMS索引但不分析
Field.Index.UN_TOKENIZED索引但不分词
Field.Index.TOKENIZED 分词并且索引
3,Document
Document doc = new Document();
创建一个不含任何Field的空Document
doc.add(field);
将field加入Document
4,IndexWriter
IndexWriter writer = new IndexWriter(directory,indexWriterConfig);
Directory directory = FSDirectory.open(new File(path));
new IndexWriterConfig(Version.LUCENE_36, new StandardAnalyzer(Version.LUCENE_36))
writer.addDocument(doc);
将Document对象加入IndexWriter中
writer.close();
关闭IndexWriter
5,注意:
对于对某个文件或者某个目录下的所有的文件进行建立索引时,一般是将文件名和文件内容进行索引、文件全路径进行索引(可选)。
搜索的具体讲解:
执行搜索的基本方式:
1,创建搜索器对象IndexSearcher
IndexSearcher searcher = new IndexSearcher(indexReader);
Searcher.search(......);
搜索,有很多重载的方法,参数不一
searcher.close();
关闭IndexSearcher对象
2,封装搜索条件:Term对象和Query对象
Term term = new Term(字段名称,关键字);
Query query = new TermQuery(term);
3,搜索
TopDocs tds = searcher.search(query,........)
中文分词器讲解:
StandardAnalyzer标准分析器(默认是对每一个字进行索引),如果索引中有“红”,而搜索“工”是搜索不到的!
分
词
的方法:
(1)
单字切分
(2)
二分法
(3)
词典法
(4)
语义法
Lucene的分词器:
(1)
二分分词器
(2)
Lucene自带的中文分词器
(3)
NGram分词器
(4)
JE分词器
(5)
IK分词器
接下类的内容:
·
桌面搜索引擎开发
·
web搜索引擎开发
·
数据解析(常见二进制文件,xml,html,集成数据......)
·
Lucene自带的数据解析方法
·
Lius
·
索引高级部分(索引的管理和优化)
·
Nutch
相关推荐
《Lucene搜索引擎开发权威经典》是由于天恩编著的一本深入探讨Lucene搜索引擎开发的专业书籍,这本书结合源码分析,旨在帮助读者掌握Lucene的核心技术和应用实践。Lucene是Apache软件基金会的一个开放源代码项目,它...
《Lucene搜索引擎开发权威经典》是一本深入探讨Apache Lucene的专著,作者于天恩在书中详尽地阐述了Lucene的核心概念、工作原理以及实际应用。这本书旨在帮助读者理解如何利用Lucene构建高性能、可扩展的全文搜索...
[Lucene搜索引擎开发权威经典].于天恩著.扫描版.7z.001[Lucene搜索引擎开发权威经典].于天恩著.扫描版.7z.001
本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精炼简洁,恰到好处。 本书包含了必要的理论,但以实践为主。所讲的理论都不是纸上谈兵,都是可以立即付诸实践进行...
Lucene搜索引擎开发权威经典 光盘 于天恩 著 中国铁道出版社出版 2008-10 这本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精练简洁,恰到好处。 本书共包括16章,...
《Lucene搜索引擎开发权威经典》是一本由作者于天恩撰写的关于Lucene搜索引擎开发的书籍。这本书以幽默轻松的写作风格,深入浅出地介绍了Lucene的基础知识和实践应用,虽然在深度上可能稍显不足,但其详尽的代码注释...
《Lucene搜索引擎开发权威经典》是由著名IT教育专家于天恩老师编著的一本深入解析Lucene搜索引擎开发的专业书籍。这本书结合源代码分析,详细介绍了如何利用Lucene进行信息检索和全文搜索的实现。Lucene是Apache软件...
《Lucene搜索引擎开发权威经典11-14》是一本深度剖析Lucene搜索引擎技术的专业书籍,专注于讲解如何利用Lucene进行高效、精准的全文检索。该书以Lucene的2.1版本为背景,深入浅出地介绍了从基础概念到实际开发应用的...
《Lucene搜索引擎开发权威经典》源码包是一个深入理解并掌握Apache Lucene的宝贵资源,它将Lucene的核心组件和功能以模块化的形式呈现,便于开发者逐个学习和研究。Lucene是一个开源的全文检索库,它提供了高效的、...
结合笔者的实际开发经验,总结了一些新的开发技巧和开发思路,并对网上流传的一些错误...本书既可为零起点的Lucene初学者提供系统全面的学习指导,也可帮助有相关经验的开发者解决在开发过程中遇到的一些难题和疑惑。
《Lucene搜索引擎开发进阶实战》是一本针对Java开发者深入学习Lucene搜索引擎的高级教程,旨在帮助读者掌握如何利用Lucene构建高效、精准的全文检索系统。Lucene是Apache软件基金会的一个开源项目,它提供了高性能、...
这个资源是一个关于“ASP.NET Ajax集成Lucene搜索引擎开发设计与实现”的项目包,该项目的设计实现包含以下几个方面: Lucene搜索引擎集成:利用Lucene的强大搜索能力,对网站或应用内的数据进行索引和搜索,支持...
《Lucene搜索引擎开发权威经典》是一本深入探讨Apache Lucene的专著,它为读者提供了全面的Lucene搜索引擎开发知识。Lucene是一个高性能、全文本搜索库,由Java编写,广泛应用于各种信息检索系统。通过这本书的源码...
lucene搜索引擎开发权威经典这本书的代码
《lucene搜索引擎开发权威经典》一书的光盘源代码包含了大量的示例和实践项目,是深入了解和学习Apache Lucene搜索引擎技术的重要资源。Lucene是一个高性能、全文本搜索库,由Java编写,广泛应用于各种搜索应用中。...
本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精炼简洁,恰到好处。 本书包含了必要的理论,但以实践为主。所讲的理论都不是纸上谈兵,都是可以立即付诸实践进行...