`
yuxingfirst
  • 浏览: 49640 次
  • 性别: Icon_minigender_1
  • 来自: 湘潭
社区版块
存档分类
最新评论

Lucene02----整体架构

阅读更多

 

Lucene的总体架构

 

 

Lucene 是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点

 

 

 

Lucene 的各组件

 

 

  被索引的文档用Document对象表示。

   IndexWriter通过函数addDocument将文档添加到索引中,实现创建索引的过程。

   Lucene的索引是应用反向索引。

   当用户有请求时,Query代表用户的查询语句。

   IndexSearcher通过函数search搜索Lucene Index

 

  IndexSearcher计算term weightscore并且将结果返回给用户。

 

 

Lucene API 的调用实现索引

File path = new File("G:/index");
if (!path.exists()) {
		path.mkdir();
}
//索引文件保存的目录
Directory d = FSDirectory.open(path);
//词法分析及语言处理组件
Analyzer analyzer = new StandardAnalyzer(DEFAULT_VERSION);
//保存有关IndexWriter的所有配置信息
IndexWriterConfig conf = new IndexWriterConfig(DEFAULT_VERSION,
					analyzer);
//创建以及维护一个索引的IndexWriter
IndexWriter indexWriter = new IndexWriter(d, conf);


//要简历索引的目录
File indexFileDir = new File("G:/SearchDir");
File[] files = indexFile.listFiles();
for (File file : files) {
			if (file.isDirectory()) {
					fileIndexerProcessor(writer, file);
				} else {
					Document document = new Document();
		document.add(new Field("text", new FileReader(file)));
					writer.addDocument(document);
				}
		}
//在一个索引上执行优化操作
indexWriter.optimize();
//提交在一个索引上所做的所有改变以及关闭关联的文件。要注意这是一个昂贵的操作,要尝试重用单个IndexWriter实例而不是关闭和重新创建
indexWriter.close();
 

 

搜索过程

File indexDir = new File("G:/index");	
//索引文件存放的目录
	Directory dir = FSDirectory.open(indexDir);
 	//IndexReader是一个抽象类,提供了访问一篇索引的接口
	IndexReader reader = IndexReader.open(dir); 
	//在单个IndexReader搜索的实现,通常,应用程序只需要调用继承的 search(Query,int) or search(Query,Filter,int) 方法,为了更好的性能,当你的索引没有修改的情况下,一般最好在多个搜索上共享一个IndexReader实例,而不是每一次搜索都新创建一个。如果你的索引被修改了并且你希望看到这些修改对搜索结果的影响,应该使用IndexReader.reopen() 来获取一个新的reader然后用它创建一个新的IndexSearcher。
	IndexSearcher searcher = new IndexSearcher(reader);
    //Analyzer创建了解析文本的TokenStreams,它代表了一种从文本中提取索引项的方针
	Analyzer analyzer = new StandardAnalyzer(DEFAULT_VERSION);
	//QueryParse对查询语句行进分析,有JAVACC生成,最重要的方法就是parse(String);
	QueryParser parser = new QueryParser(DEFAULT_VERSION, "text",
					analyzer);
    //QueryParser 调用parser 进行语法分析,形成查询语法树,放到Query 中
	Query query = parser.parse("Romanian,Bulgarian");
	//TopDocs代表搜索所获得的命中的结果数
	TopDocs hits = searcher.search(query, null, 10);
		System.out.println(hits.totalHits);
 

 

此图是上一节介绍的全文检索的流程对应的Lucene 实现的包结构

Lucene analysis 模块主要负责词法分析及语言处理而形成Term

Luceneindex模块主要负责索引的创建,里面有IndexWriter

Lucenestore模块主要负责索引的读写。

Lucene QueryParser主要负责语法分析。

Lucenesearch模块主要负责对索引的搜索。

0
1
分享到:
评论

相关推荐

    lucene-analyzers-smartcn-7.7.0-API文档-中文版.zip

    赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    lucene-analyzers-common-6.6.0-API文档-中文版.zip

    赠送jar包:lucene-analyzers-common-6.6.0.jar; 赠送原API文档:lucene-analyzers-common-6.6.0-javadoc.jar; 赠送源代码:lucene-analyzers-common-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-...

    lucene-core-7.7.0-API文档-中文版.zip

    赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...

    lucene-suggest-6.6.0-API文档-中文版.zip

    赠送jar包:lucene-suggest-6.6.0.jar; 赠送原API文档:lucene-suggest-6.6.0-javadoc.jar; 赠送源代码:lucene-suggest-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-suggest-6.6.0.pom; 包含翻译后的API...

    lucene-core-7.2.1-API文档-中文版.zip

    赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...

    lucene-backward-codecs-7.3.1-API文档-中英对照版.zip

    赠送jar包:lucene-backward-codecs-7.3.1.jar; 赠送原API文档:lucene-backward-codecs-7.3.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...

    lucene-analyzers-smartcn-7.7.0-API文档-中英对照版.zip

    赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...

    lucene-spatial-extras-7.3.1-API文档-中英对照版.zip

    赠送jar包:lucene-spatial-extras-7.3.1.jar; 赠送原API文档:lucene-spatial-extras-7.3.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...

    lucene-spatial-extras-7.2.1-API文档-中英对照版.zip

    赠送jar包:lucene-spatial-extras-7.2.1.jar; 赠送原API文档:lucene-spatial-extras-7.2.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...

    lucene-core-6.6.0-API文档-中文版.zip

    赠送jar包:lucene-core-6.6.0.jar; 赠送原API文档:lucene-core-6.6.0-javadoc.jar; 赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene...

    lucene-spatial-extras-6.6.0-API文档-中英对照版.zip

    赠送jar包:lucene-spatial-extras-6.6.0.jar; 赠送原API文档:lucene-spatial-extras-6.6.0-javadoc.jar; 赠送源代码:lucene-spatial-extras-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...

    lucene-sandbox-7.2.1-API文档-中文版.zip

    赠送jar包:lucene-sandbox-7.2.1.jar; 赠送原API文档:lucene-sandbox-7.2.1-javadoc.jar; 赠送源代码:lucene-sandbox-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-sandbox-7.2.1.pom; 包含翻译后的API...

    lucene-backward-codecs-7.2.1-API文档-中英对照版.zip

    赠送jar包:lucene-backward-codecs-7.2.1.jar; 赠送原API文档:lucene-backward-codecs-7.2.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...

    lucene-core-3.0.2.jar,lucene-demos-3.0.2.jar

    lucene jar包,lucene,lucene-core-3.0.2.jar;lucene-demos-3.0.2.jar

    lucene-core-6.6.0-API文档-中英对照版.zip

    赠送jar包:lucene-core-6.6.0.jar; 赠送原API文档:lucene-core-6.6.0-javadoc.jar; 赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene...

    lucene-memory-6.6.0-API文档-中文版.zip

    赠送jar包:lucene-memory-6.6.0.jar; 赠送原API文档:lucene-memory-6.6.0-javadoc.jar; 赠送源代码:lucene-memory-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-memory-6.6.0.pom; 包含翻译后的API文档...

    lucene-suggest-7.7.0-API文档-中文版.zip

    赠送jar包:lucene-suggest-7.7.0.jar; 赠送原API文档:lucene-suggest-7.7.0-javadoc.jar; 赠送源代码:lucene-suggest-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-suggest-7.7.0.pom; 包含翻译后的API...

    lucene-backward-codecs-6.6.0-API文档-中英对照版.zip

    赠送jar包:lucene-backward-codecs-6.6.0.jar; 赠送原API文档:lucene-backward-codecs-6.6.0-javadoc.jar; 赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...

    lucene-backward-codecs-6.6.0-API文档-中文版.zip

    赠送jar包:lucene-backward-codecs-6.6.0.jar; 赠送原API文档:lucene-backward-codecs-6.6.0-javadoc.jar; 赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...

Global site tag (gtag.js) - Google Analytics