设为首页 收藏本站
| 数控仿真 | 技术文章 | 公路造价 | 文档管理软件 |
| 幸运之门彩票网 | 彩票新闻 | 免费招聘 | 百科问吧 | 百姓族谱 | 小游戏网 |
奥运会会歌简介
文档管理 | 数据库技术 | 全文检索 | 中文分词 | 文件格式 | Lucene | FireBird | IIS | 免费小游戏 | 彩票论坛
Google
北京紫气东来网络公司 > 技术文章 > Lucene > ANNOTATED LUCENE(中文版)
全文检索 | Lucene |
ANNOTATED LUCENE(中文版)

发表:北京紫气东来网络公司www.chianwiss.com,本文被阅读:1
1 Lucene是什么
Apache Lucene是一个高性能(high-performance)的全能的全文检索(full-featured text search engine)的搜索引擎框架库,完全(entirely)使用Java开发。它是一种技术(technology),适合于(suitable for)几乎(nearly)任何一种需要全文检索(full-text search)的应用,特别是跨平台(cross-platform)的应用。



Lucene 通过一些简单的接口(simple API)提供了强大的特征(powerful features):



可扩展的高性能的索引能力(Scalable, High-Performance Indexing)

ü 超过20M/分钟的处理能力(Pentium M 1.5GHz)

ü 很少的RAM内存需求,只需要1MB heap

ü 增量索引(incremental indexing)的速度与批量索引(batch indexing)的速度一样快

ü 索引的大小粗略(roughly)为被索引的文本大小的20-30%

强大的精确的高效率的检索算法(Powerful, Accurate and Efficient Search Algorithms)

ü 分级检索(ranked searching)能力,最好的结果优先推出在前面

ü 很多强大的query种类:phrase queries, wildcard queries, proximity queries, range queries等

ü 支持域检索(fielded searching),如标题、作者、正文等

ü 支持日期范围检索(date-range searching)

ü 可以按任意域排序(sorting by any field)

ü 支持多个索引的检索(multiple-index searching)并合并结果集(merged results)

ü 允许更新和检索(update and searching)并发进行(simultaneous)

跨平台解决方案(Cross-Platform Solution)

ü 以Open Source方式提供并遵循Apache License,允许你可以在即包括商业应用也包括Open Source程序中使用Lucene

ü 100%-pure Java(纯Java实现)

ü 提供其他开发语言的实现版本并且它们的索引文件是兼容的



Lucene API被分成(divide into)如下几种包(package)



org.apache.lucene.analysis 定义了一个抽象的Analyser API,用于将text文本从一个java.io.Reader转换成一个TokenStream,即包括一些Tokens的枚举容器(enumeration)。一个TokenStream的组成(compose)是通过在一个Tokenizer的输出的结果上再应用TokenFilters生成的。一些少量的Analysers实现已经提供,包括StopAnalyzer和基于语法(gramar-based)分析的StandardAnalyzer。

org.apache.lucene.document 提供一个简单的Document类,一个document只不过包括一系列的命名了(named)的Fields(域),它们的内容可以是文本(strings)也可以是一个java.io.Reader的实例。

org.apache.lucene.index 提供两个主要地饿类,一个是IndexWriter用于创建索引并添加文档(document),另一个是IndexReader用于访问索引中的数据。

org.apache.lucene.search 提供数据结构(data structures)来呈现(represent)查询(queries):TermQuery用于单个的词(individual words),PhraseQuery用于短语,BooleanQuery用于通过boolean关系组合(combinations)在一起的queries。而抽象的Searcher用于转变queries为命中的结果(hits)。IndexSearcher实现了在一个单独(single)的IndexReader上检索。

org.apache.lucene.queryParser 使用JavaCC实现一个QueryParser。

org.apache.lucene.store 定义了一个抽象的类用于存储呈现的数据(storing persistent data),即Directory(目录),一个收集器(collection)包含了一些命名了的文件(named files),它们通过一个IndexOutput来写入,以及一个IndexInput来读取。提供了两个实现,FSDirectory使用一个文件系统目录来存储文件,而另一个RAMDirectory则实现了将文件当作驻留内存的数据结构(memory-resident data structures)。

org.apache.lucene.util 包含了一小部分有用(handy)的数据结构,如BitVector和PriorityQueue等。



2 Hello World!
下面是一段简单的代码展示如何使用Lucene来进行索引和检索(使用JUnit来检查结果是否是我们预期的):


1 // Store the index in memory:
2 Directory directory = new RAMDirectory();
3 // To store an index on disk, use this instead:
4 //Directory directory = FSDirectory.getDirectory("/tmp/testindex");
5 IndexWriter iwriter = new IndexWriter(directory, analyzer, true);
6 iwriter.setMaxFieldLength(25000);
7 Document doc = new Document();
8 String text = "This is the text to be indexed.";
9 doc.add(new Field("fieldname", text, Field.Store.YES,
10 Field.Index.TOKENIZED));
11 iwriter.addDocument(doc);
12 iwriter.optimize();
13 iwriter.close();
14
15 // Now search the index:
16 IndexSearcher isearcher = new IndexSearcher(directory);
17 // Parse a simple query that searches for "text":
18 QueryParser parser = new QueryParser("fieldname", analyzer);
19 Query query = parser.parse("text");
20 Hits hits = isearcher.search(query);
21 assertEquals(1, hits.length());
22 // Iterate through the results:
23 for (int i = 0; i < hits.length(); i++) {
24 Document hitDoc = hits.doc(i);
25 assertEquals("This is the text to be indexed.", hitDoc.get("fieldname"));
26 }
27 isearcher.close();
28 directory.close();



为了使用Lucene,一个应用程序需要做如下几件事:

1. 通过添加一系列Fields来创建一批Documents对象。

2. 创建一个IndexWriter对象,并且调用它的AddDocument()方法来添加进Documents。

3. 调用QueryParser.parse()处理一段文本(string)来建造一个查询(query)对象。

4. 创建一个IndexReader对象并将查询对象传入到它的search()方法中。

wiss文档协同系统三分钟解决一切文档管理的烦恼,帮您完成公司文档到资产的转变!!!
更多功能欢迎访问 http://www.chinawiss.com
 北京紫气东来网络公司 > 技术文章 > Lucene
·LUCENE索引文件格式分析 (22)
·LUCENE系统结构分析 (15)
·LUCENE的应用、特点及优势 (14)
·搜索引擎ANTISPAM系统设计指南 (9)
 最新文章
·ANNOTATED LUCENE(中文版)
·FIREBIRD数据库介绍
·网络查找文档比自己电脑上还方便?
·刑侦角度看搜索
·论数据库技术的发展史
·老板的权利 员工的负担?
·论数据库技术的发展史
·"金沙"文档,掀起企业淘金热
·企业文档,高效管理就是资产增值
·无纸化办公≠现代化?
·新天方夜谭:给每位员工配一位文档管理员
·拆招中国企业生存的第35处致命伤
·文档资产,"固定"还是"流动"?
·三堂课,破译企业生存密码
·企业文档:企业资产还是个人资产?
·天灾还是人祸,让你知道最爱是谁?
·搜索引擎ANTISPAM系统设计指南
·全文检索概念
·垂直搜索引擎的选型
·网页搜索引擎竞争分析
·中文搜索引擎技术揭密:网络蜘蛛
·信息检索的核心支撑技术
·真正搜索高手
·搜索引擎优化
·刑侦角度看搜索
·全文检索概念
·LUCENE索引文件格式分析
·LUCENE系统结构分析
·LUCENE的应用、特点及优势
·DELPHI与WORD之间的融合技术
·VC实现类似EXCEL文件夹式样的标签控制
·DELPHI自动化控制EXCEL
·PDF与WORD之间提取和转换经验浅谈
·希望PDFLIB TET― 理想的文本提取软件包
·用DELPHI编制WINDOWS95下的钩子函数
·用DELPHI编制WINDOWS95下的钩子函数
·JDBC HIBERNATE 连接数据库连接字符串大
·用C#制作PDF文件全攻略
·对PDF文件的文本抽取(PDFBOX处理中文PDF
·对PDF文件的文本抽取(PDFBOX处理中文PDF
·对PDF文件的文本抽取(PDFBOX处理中文PDF
·对PDF文件的文本抽取(PDFBOX处理中文PDF
·PDF转成WORD TXT EXCEL RTF软件
·从HTML文件中抽取正文的简单方案
·C#抽取WORD文档内容
·JAVA抽取WORD和PDF格式文件的四种武器
 热门文章
·PDF转成WORD TXT EXCEL RTF软件
·JAVA抽取WORD和PDF格式文件的四种武器
·对PDF文件的文本抽取(PDFBOX处理中文PDF
·PDF与WORD之间提取和转换经验浅谈
·用C#制作PDF文件全攻略
·希望PDFLIB TET― 理想的文本提取软件包
·LUCENE索引文件格式分析
·从HTML文件中抽取正文的简单方案
·天灾还是人祸,让你知道最爱是谁?
·全文检索概念
·LUCENE系统结构分析
·LUCENE的应用、特点及优势
·中文搜索引擎技术揭密:网络蜘蛛
·DELPHI自动化控制EXCEL
·DELPHI与WORD之间的融合技术
·C#抽取WORD文档内容
·VC实现类似EXCEL文件夹式样的标签控制
·网页搜索引擎竞争分析
·刑侦角度看搜索
·信息检索的核心支撑技术
·真正搜索高手
·搜索引擎优化
·JDBC HIBERNATE 连接数据库连接字符串大
·搜索引擎ANTISPAM系统设计指南
·用DELPHI编制WINDOWS95下的钩子函数
·用DELPHI编制WINDOWS95下的钩子函数
·全文检索概念
·垂直搜索引擎的选型
·论数据库技术的发展史
·"金沙"文档,掀起企业淘金热
免费小游戏
宠物连连看

真人美女换装

美女脱衣服

美女胴体猜猜看

调戏床上美女

黄金矿工
“橄榄枝”是代表友谊吗?
| 2008-09-01 | 首页 | 功能介绍 | 免费下载 | 产品购买 | 在线服务 | 典型应用 | 技术文章 | 联系我们 |