`
sunasheng
  • 浏览: 123396 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Lucene搜索引擎开发

阅读更多

 

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搜索引擎开发权威经典(附盘源码)【于天恩】.zip

    《Lucene搜索引擎开发权威经典》是由于天恩编著的一本深入探讨Lucene搜索引擎开发的专业书籍,这本书结合源码分析,旨在帮助读者掌握Lucene的核心技术和应用实践。Lucene是Apache软件基金会的一个开放源代码项目,它...

    [Lucene搜索引擎开发权威经典].zip

    《Lucene搜索引擎开发权威经典》是一本深入探讨Apache Lucene的专著,作者于天恩在书中详尽地阐述了Lucene的核心概念、工作原理以及实际应用。这本书旨在帮助读者理解如何利用Lucene构建高性能、可扩展的全文搜索...

    [Lucene搜索引擎开发权威经典].于天恩著.扫描版.7z.002

    [Lucene搜索引擎开发权威经典].于天恩著.扫描版.7z.001[Lucene搜索引擎开发权威经典].于天恩著.扫描版.7z.001

    Lucene搜索引擎开发权威经典随书资源1-6章

    本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精炼简洁,恰到好处。  本书包含了必要的理论,但以实践为主。所讲的理论都不是纸上谈兵,都是可以立即付诸实践进行...

    Lucene搜索引擎开发权威经典 光盘

    Lucene搜索引擎开发权威经典 光盘 于天恩 著 中国铁道出版社出版 2008-10 这本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精练简洁,恰到好处。 本书共包括16章,...

    Lucene搜索引擎开发权威经典

    《Lucene搜索引擎开发权威经典》是一本由作者于天恩撰写的关于Lucene搜索引擎开发的书籍。这本书以幽默轻松的写作风格,深入浅出地介绍了Lucene的基础知识和实践应用,虽然在深度上可能稍显不足,但其详尽的代码注释...

    Lucene搜索引擎开发权威经典源代码

    《Lucene搜索引擎开发权威经典》是由著名IT教育专家于天恩老师编著的一本深入解析Lucene搜索引擎开发的专业书籍。这本书结合源代码分析,详细介绍了如何利用Lucene进行信息检索和全文搜索的实现。Lucene是Apache软件...

    Lucene搜索引擎开发权威经典11-14.rar

    《Lucene搜索引擎开发权威经典11-14》是一本深度剖析Lucene搜索引擎技术的专业书籍,专注于讲解如何利用Lucene进行高效、精准的全文检索。该书以Lucene的2.1版本为背景,深入浅出地介绍了从基础概念到实际开发应用的...

    lucene搜索引擎开发权威经典 源码包

    《Lucene搜索引擎开发权威经典》源码包是一个深入理解并掌握Apache Lucene的宝贵资源,它将Lucene的核心组件和功能以模块化的形式呈现,便于开发者逐个学习和研究。Lucene是一个开源的全文检索库,它提供了高效的、...

    Lucene搜索引擎开发进阶实战_PDF电子书下载

    结合笔者的实际开发经验,总结了一些新的开发技巧和开发思路,并对网上流传的一些错误...本书既可为零起点的Lucene初学者提供系统全面的学习指导,也可帮助有相关经验的开发者解决在开发过程中遇到的一些难题和疑惑。

    Lucene搜索引擎开发进阶实战----高清版

    《Lucene搜索引擎开发进阶实战》是一本针对Java开发者深入学习Lucene搜索引擎的高级教程,旨在帮助读者掌握如何利用Lucene构建高效、精准的全文检索系统。Lucene是Apache软件基金会的一个开源项目,它提供了高性能、...

    36.ASP.NET Ajax集成Lucene搜索引擎开发设计与实现(源代码+LW).zip

    这个资源是一个关于“ASP.NET Ajax集成Lucene搜索引擎开发设计与实现”的项目包,该项目的设计实现包含以下几个方面: Lucene搜索引擎集成:利用Lucene的强大搜索能力,对网站或应用内的数据进行索引和搜索,支持...

    lucene搜索引擎开发权威经典源码

    《Lucene搜索引擎开发权威经典》是一本深入探讨Apache Lucene的专著,它为读者提供了全面的Lucene搜索引擎开发知识。Lucene是一个高性能、全文本搜索库,由Java编写,广泛应用于各种信息检索系统。通过这本书的源码...

    lucene搜索引擎开发权威经典

    lucene搜索引擎开发权威经典这本书的代码

    《lucene搜索引擎开发权威经典》一书的光盘源代码

    《lucene搜索引擎开发权威经典》一书的光盘源代码包含了大量的示例和实践项目,是深入了解和学习Apache Lucene搜索引擎技术的重要资源。Lucene是一个高性能、全文本搜索库,由Java编写,广泛应用于各种搜索应用中。...

    Lucene搜索引擎开发权威经典随书资源7-10

    本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精炼简洁,恰到好处。  本书包含了必要的理论,但以实践为主。所讲的理论都不是纸上谈兵,都是可以立即付诸实践进行...

Global site tag (gtag.js) - Google Analytics