对于搜索,按被搜索的资源类型,分为两种:可以转为文本的、多媒体类型。
Lucene所做的是全文检索(Full-Text Retrieval),是指以文本作为检索对象,找出含有指定词汇的文本。全面、准确和快速是衡量全文检索系统的关键指标。
关于全文检索,我们要知道:1,只处理文本。2,不处理语义。3,搜索时英文不区分大小写。4,结果列表有相关度排序。
在信息检索工具中,全文检索是最具通用性和实用性的。
搜索的原理基本一致.
Whether it be a tool for searching the entire internet, a corporate intranet or a small website, the principal is the same.
It might go something like " Find all the availabel data sources and move then into an archive, stroe the data in some soft of searchable
format, and make a client to search this database... "
Put more formallly the three steps are Crawling , Indexing, and Searching.
*Crawling. ( -> Make data heap )
- is the process of finding all availavle data sources and storing it in some archives.
*Indexing: (-> Make structured data )
- is the process in order to make the content more accessible , the data need to be stored in a structured format.
*Searching : ( -> Get Result by Search a term )
- is the process to do a query and get the result.
Without a doubt the most challanging part of a search engine is the indexing.
Indexing . (索引)
Lucene索引过程分成三个主要的操作阶段:(1)将数据转换为文本.--> (2) 分析文本-->(3)分析过的文本保存到索引库中。
索引中五大核心类:
(1) IndexWriter类
- 创建一个新的索引并且把文档加入到已有的索引中。(仅对索引进行写操作)
(2) Directory类
- 描述了索引存放的位置.
- 是抽象类,有2个具体的子类. FSDirectory(文件系统的目录中创建索引文件), RAMDriectory.(内存中保存数据)
(3) Analyzer类
- 文本在被索引之前,需要进过分析器(Analyzer)的处理。
- 应用程序在IndexWriter的构造函数中指定程序所需要使用的分析器。
- 负责从被索引的文本文件中提取语汇单元(tokens),剔除无用信息。
- 是抽象类,Lucene中提供他的几个具体实现类。
(4) Document类
- 代表一些域的(Fiield) 的集合。
- 可以吧Document对象当成一个虚拟的文档(web页面,Email消息,文本文件),然后从中取回大量的数据。
(5) Field 类,
- 每个Document对象包括一个或多个域(Field).每个域对应于一段数据
- Lucene提供四种不同的域: Keyword域,UnInexed域,UnStored域,Text域。
Searching ( 搜索)
搜索中的四大核心类.
(1)IndexSearcher类.
- 搜索之前由IndexWriter类所创建的索引.
- 最简单的search方法是将一个Query对象作为参数,返回一个Hits对象.
IndexSearcher is = new IndexSearcher(FSDirectory.getDirectory("/tmp/index",false));
//查找 contents Field中包含单词"lucene"的所有文档。TermQuery 是从抽象父类Query继承而来。
Query q = new TermQuery(new Term("contents","lucene"));
Hits hits = is.search(q);
(2)Term类.
- 用于搜索的基本单元。包含了一对字符串元素. 和 Field中的name , value 相对应。
(3) Query类
- 抽象类,具体的子类有TermQuery, BoolearnQuery, PhraseQuery, PrefixQuery 等.
- 其中TermQuery是最基本的查询类型。
(4) Hits 类.
- 是存放有序搜索结果之争的简单容器。
参考: Lucene in Action , 并对Lucene/Nutch 的开发者 Doug Cutting 致以崇高的敬意。
参考: Lucene Website Crawler and Indexer (作者: stlane ) 并参考其博客。
分享到:
相关推荐
C# Lucene.Net .Analysis.Cn.dll和Lucene.Net.dll两个文件
基于java的开发源码-搜索引擎 Lucene.zip 基于java的开发源码-搜索引擎 Lucene.zip 基于java的开发源码-搜索引擎 Lucene.zip 基于java的开发源码-搜索引擎 Lucene.zip 基于java的开发源码-搜索引擎 Lucene.zip 基于...
licene 实例代码 nutch实例代码 lucene+nutch搜索引擎开发实例代码(王学松版)
[硕士论文]_基于Lucene的Web搜索引擎实现.pdf [硕士论文]_基于MapReduce的分布式智能搜索引擎框架研究.pdf [硕士论文]_基于Nutch的垂直搜索引擎的分析与实现.pdf 一个例子学懂搜索引擎(lucene).doc 中文搜索引擎技术...
搜索引擎核心技术与实现(基于Lucene和Solr).pdf
基于lucene的搜索引擎,相关论文,欢迎下载
搜索引擎-基于Lucene的主题搜索引擎研究.pdf
Lucene nutch 搜索引擎开发 Part1
基于lucene 的简单搜索引擎.rar
Lucene搜索引擎开发权威经典(附盘源码)【于天恩】.zip
资源名字:基于C#+asp.net+sqlserver的搜索引擎设计与实现(源码+文档)_.net_ajax_lucene_搜索引擎.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景:...
lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的
[Lucene搜索引擎开发权威经典].于天恩著.扫描版.7z.001[Lucene搜索引擎开发权威经典].于天恩著.扫描版.7z.001
lucene2.9.1-src.tar.gz源码及完整Demo Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和...人们经常提到资讯检索程式库,就像是搜寻引擎,但是不应该将资讯检索程式库与网搜索引擎相混淆。
基于Lucene的全文搜索引擎设计.doc
LUCENE搜索引擎基本工作原理 详细介绍了搜索引擎的工作原理
基于Heritrix与Lucene的垂直搜索引擎研究.pdf
Java搜索引擎 Lucene.7z
基于Java的搜索引擎 Lucene.zip