lucene学习

全文检索系统的结构包括:文本处理引擎,索引引擎,磁盘索引文件,查询引擎,二次应用开发接口。<o:p></o:p>

Lucene是一个开放源代码的全文检索引擎工具包,不是一个完整的全文检索引擎,而是一个全文检索引擎的架构。<o:p></o:p>

成功案例:Eclipse,Jive<o:p></o:p>

<o:p></o:p>

Lucene包结构(七大块)<o:p></o:p>

<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><o:p></o:p>

<o:p></o:p>

Lucene的倒排索引算法:<o:p></o:p>

<o:p></o:p>

设有两篇文章12
文章1的内容为:Tom lives in <st1:city w:st="on">Guangzhou</st1:city>,I live in <st1:place w:st="on"><st1:city w:st="on">Guangzhou</st1:city></st1:place> too.
文章2的内容为:He once lived in <st1:place w:st="on"><st1:city w:st="on">Shanghai</st1:city></st1:place>.<o:p></o:p>

传统算法:<o:p></o:p>

文章1的所有关键词为:[tom] [live] [guangzhou] [i] [live] [guangzhou]
   
文章2的所有关键词为:[he] [live] [shanghai]<o:p></o:p>

倒排索引算法:<o:p></o:p>

关键词   文章号[出现频率]   出现位置
guangzhou 1[2]               3
6
he       2[1]               1
i         1[1]               4
live      1[2],2[1]           2
52
shanghai  2[1]               3
tom      1[1]               1
<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

一、环境<o:p></o:p>

需要导入lucene.jar包(在lucene.apache.org下载)<o:p></o:p>

二、基本概念<o:p></o:p>

1Lucene的工作流程:<o:p></o:p>

(1) 建立索引:主要使用IndexWriter,在指定的目录建立索引的文件.<o:p></o:p>

                 IndexWrite几种构造函数<o:p></o:p>

         IndexWrite(String str ,  Analyzer a ,  Boolean create)<o:p></o:p>

                  IndexWrite(File  f ,    Analyzer a,  Boolean create)<o:p></o:p>

         IndexWrite(Directory d ,  Analyzer a,  Boolean create)<o:p></o:p>

<o:p></o:p>

         <o:p></o:p>

    a.提取文本. Lucene只能对文本信息建立索引,只要你能将要索引的文件转化成文本格式,Lucene 就能为你的文档建立索引。比如,如果你想为 HTML 文档或者 PDF 文档建立索引,那么首先你就需要从这些文档中提取出文本信息,然后把文本信息交给 Lucene 建立索引。<o:p></o:p>

    b.构建Document<o:p></o:p>

    c.分析并建立索引,在提取了需要Lucene建立索引的数据并且创建了Document之后,接下来就可以调用IndexWrite类的addDocument()方法来使Lucene建立索引了。<o:p></o:p>

    
   (2) 
创建搜索的Query
   (3 )
利用IndexSearcher进行搜索<o:p></o:p>

<o:p></o:p>

2Lucene的字段Field类型<o:p></o:p>

<o:p></o:p>

对于每个Field , Lucene提供了3种方式以供用户选择进行处理,这3种方式分别是“是否切词”,“是否索引”,“是否存储”。<o:p></o:p>

Lucene有四种不同的字段类型:KeywordUnIndexedUnStoredText,用于指定建立最佳索引。<o:p></o:p>

<o:p></o:p>



<o:p></o:p>

字段类型<o:p></o:p>

是否切词<o:p></o:p>

是否索引<o:p></o:p>

是否存储<o:p></o:p>

    主要用途<o:p></o:p>

Field.Keyword(String name,String value)<o:p></o:p>

Field.Keyword(String Date)<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

电话号码,居民身份证,人名,地名,日期等<o:p></o:p>

Field.UnIndexed(String,String)<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

文档的类型,例如:Word,PDF,HTML<o:p></o:p>

Field.UnStored(String,String)<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

文档的标题和内容<o:p></o:p>

Field.Text(String,String)<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

文档的标题和内容<o:p></o:p>

Field.Text(String,Reader)<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

文档的标题和内容<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

3基本概念(与传统表的对比):<o:p></o:p>

Lucene<o:p></o:p>

传统表<o:p></o:p>

说明<o:p></o:p>

IndexWriter<o:p></o:p>

table<o:p></o:p>

<o:p></o:p>

Document<o:p></o:p>

一条记录<o:p></o:p>

<o:p></o:p>

Field<o:p></o:p>

每个字段<o:p></o:p>

分为可被索引的,可切分的,不可被切分的,不可被索引的几种组合类型<o:p></o:p>

Hits<o:p></o:p>

RecoreSet<o:p></o:p>

结果集<o:p></o:p>

<o:p></o:p>

  调整性能参数,提高建立索引效率<o:p></o:p>

IndexWriter提供了一些参数可供设置,列表如下<o:p></o:p>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值