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

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>

分享到:
评论

相关推荐

    lucene学习资料收集

    【标题】:“Lucene学习资料收集” 【描述】:Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发。这个资料集可能包含了关于如何理解和使用Lucene的各种资源,特别是通过博主huanglz19871030在iteye上的...

    lucene学习资料

    《Lucene学习资料》 Lucene是一个开源的全文搜索引擎库,由Apache软件基金会维护。它提供了高级的文本分析和索引功能,使得开发者能够轻松地在应用程序中集成强大的搜索功能。这个资料包中的《Lucene in Action_2nd...

    Lucene学习源码.rar

    本文将主要围绕Java Lucene进行深入探讨,并基于提供的“Lucene学习源码.rar”文件中的“Lucene视频教程_讲解部分源码”展开讨论。 一、Lucene核心概念 1. 文档(Document):Lucene中的基本单位,用于存储待检索...

    lucene学习pdf2

    "lucene学习pdf2" 提供的文档,无疑是对Lucene深入理解的一把钥匙,它涵盖了Lucene的核心概念、操作流程以及高级特性。 首先,Lucene的基础知识是必不可少的。Lucene的核心在于索引和搜索,它将非结构化的文本数据...

    lucene学习-02

    【标题】:“Lucene学习-02” 在深入探讨“Lucene学习-02”这一主题之前,我们先来理解一下Lucene的核心概念。Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,广泛应用于各种搜索引擎和信息检索系统。...

    Lucene的的学习资料及案例

    **Lucene学习指南** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个简单的API,使得开发者能够方便地在应用中实现全文检索功能。本篇文章将...

    【大搜集:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    lucene学习笔记 1 .txt lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用 .txt lucene性能.txt 大富翁全文索引和查询的例子...

    Lucene学习工具包.zip

    **Lucene学习工具包** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。这个"Lucene学习工具包.zip"包含了学习Lucene所需的重要资料和资源,旨在帮助开发者深入理解和掌握Lucene的核心概念、功能...

    Lucene学习例子与文档

    **Lucene学习例子与文档详解** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,它提供了完整的搜索功能,包括索引、查询、排序等。Lucene被广泛应用于各种需要全文检索的项目中,如网站、文档管理、...

    lucene学习入门程序

    **Lucene学习入门程序** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它是Java编写,可以被集成到各种应用中,提供强大的文本检索功能。本程序是针对初学者设计的,旨在帮助开发者快速理解并...

    lucene学习全方面剖析总结

    ### Lucene 学习全方面剖析总结 #### Lucene 原理与应用概述 Lucene 是一个高性能、全文检索的开源库,被广泛应用于各种搜索引擎的开发之中。本篇文章旨在全面剖析 Lucene 的核心技术和应用场景,帮助读者深入理解...

    Lucene 学习笔记 1

    **Lucene 学习笔记 1** Lucene 是一个全文搜索引擎库,由 Apache 软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够在其应用程序中集成高级的搜索功能。本篇学习笔记将深入探讨 Lucene 的...

    Lucene学习笔记.doc

    【Lucene学习笔记】 Lucene是一个高性能、全文检索的开源库,完全用Java编写,能够帮助开发者在应用程序中实现复杂的搜索引擎功能。它提供了强大的索引和搜索机制,使得从大量文本数据中快速找到相关信息变得简单。...

    lucene学习笔记

    标题:Lucene学习笔记 描述:Lucene学习笔记,Lucene入门必备材料 知识点: 一、Lucene概述与文档管理策略 Lucene是一款高性能、全功能的文本搜索引擎库,广泛应用于文档检索、全文搜索等场景。为了提升搜索效率...

Global site tag (gtag.js) - Google Analytics