`

lucene4.9学习之搭建框架及简单运行

 
阅读更多

1.搭建框架

在Eclipse项目中的pom.xml中加入

<dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>4.11</version>

      <scope>test</scope>

    </dependency>

    

    <dependency>

    <groupId>org.apache.lucene</groupId>

    <artifactId>lucene-core</artifactId>

    <version>4.9.0</version>

    </dependency>

    

    <dependency>

    <groupId>org.apache.lucene</groupId>

    <artifactId>lucene-queryparser</artifactId>

    <version>4.9.0</version>

    </dependency>

    

    <dependency>

    <groupId>org.apache.lucene</groupId>

    <artifactId>lucene-analyzers-common</artifactId>

    <version>4.9.0</version>

    </dependency>

    

    <dependency>

    <groupId>org.apache.lucene</groupId>

    <artifactId>lucene-highlighter</artifactId>

    <version>4.9.0</version>

    </dependency>

即可,此时已经引入了必须的jar包了。

2.简单运行

新建test类,先写建立索引的代码

Analyzer analyzer =newStandardAnalyzer(Version.LUCENE_CURRENT);// Store the index in memory:Directory directory =newRAMDirectory();// To store an index on disk, use this instead://Directory directory = FSDirectory.open("/tmp/testindex");IndexWriterConfig config =newIndexWriterConfig(Version.LUCENE_CURRENT, analyzer);IndexWriter iwriter =newIndexWriter(directory, config);Document doc =newDocument();String text ="This is the text to be indexed.";
    doc.add(newField("fieldname", text,TextField.TYPE_STORED));
    iwriter.addDocument(doc);
    iwriter.close();

 

然后再接着写搜索的代码

// Now search the index:DirectoryReader ireader =DirectoryReader.open(directory);IndexSearcher isearcher =newIndexSearcher(ireader);// Parse a simple query that searches for "text":QueryParser parser =newQueryParser(Version.LUCENE_CURRENT,"fieldname", analyzer);Query query = parser.parse("text");ScoreDoc[] hits = isearcher.search(query,null,1000).scoreDocs;
    assertEquals(1, hits.length);// Iterate through the results:for(int i =0; i < hits.length; i++){Document hitDoc = isearcher.doc(hits[i].doc);
      assertEquals("This is the text to be indexed.", hitDoc.get("fieldname"));}
    ireader.close();
    directory.close();

 

 

此时运行。

 建立索引 

为了对文档进行索引,Lucene 提供了五个基础的类,他们分别是 Document, Field, IndexWriter, Analyzer, Directory。下面我们分别介绍一下这五个类的用途: 

Document 

Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。一个 Document 对象由多个 Field 对象组成的。可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。 

Field 
Field 对象是用来描述一个文档的某个属性的,比如一封电子邮件的标题和内容可以用两个 Field 对象分别描述。 

Analyzer 

在一个文档被索引之前,首先需要对文档内容进行分词处理,这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。针对不同的语言和应用需要选择适合的 Analyzer。Analyzer 把分词后的内容交给 IndexWriter 来建立索引。 

IndexWriter 

IndexWriter 是 Lucene 用来创建索引的一个核心的类,他的作用是把一个个的 Document 对象加到索引中来。 

Directory 

这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。 
搜索文档 
利用 Lucene 进行搜索就像建立索引一样也是非常方便的。在上面一部分中,我们已经为一个目录下的文本文档建立好了索引,现在我们就要在这个索引上进行搜索以找到包含某个关键词或短语的文档。Lucene 提供了几个基础的类来完成这个过程,它们分别是呢 IndexSearcher, Term, Query, TermQuery, Hits. 下面我们分别介绍这几个类的功能。 

Query 
这是一个抽象类,他有多个实现,比如 TermQuery, BooleanQuery, PrefixQuery. 这个类的目的是把用户输入的查询字符串封装成 Lucene 能够识别的 Query。 

Term 
Term 是搜索的基本单位,一个 Term 对象有两个 String 类型的域组成。生成一个 Term 对象可以有如下一条语句来完成:Term term = new Term(“fieldName”,”queryWord”); 其中第一个参数代表了要在文档的哪一个 Field 上进行查找,第二个参数代表了要查询的关键词。 

TermQuery 
TermQuery 是抽象类 Query 的一个子类,它同时也是 Lucene 支持的最为基本的一个查询类。生成一个 TermQuery 对象由如下语句完成: TermQuery termQuery = new TermQuery(new Term(“fieldName”,”queryWord”)); 它的构造函数只接受一个参数,那就是一个 Term 对象。 

IndexSearcher 

IndexSearcher 是用来在建立好的索引上进行搜索的。它只能以只读的方式打开一个索引,所以可以有多个 IndexSearcher 的实例在一个索引上进行操作。 

Hits 

Hits 是用来保存搜索的结果的。 

 

 

分享到:
评论

相关推荐

    lucene4.9全包

    《Apache Lucene 4.9 全面解析》 Apache Lucene 是一个开源全文搜索引擎库,它为开发者提供了构建高效、可扩展的信息检索应用的基础工具。4.9 版本是 Lucene 的一个重要里程碑,引入了多项改进和新特性,以优化搜索...

    ICTCLAS分词器与Lucene4.9的结合

    基于ICTCLAS中科院分词器实现Lucene4.9版本的中文分词功能,新增中英文停用词库,直接导入即可使用。

    lucene4.9初体验(源码附件)

    《Lucene 4.9初体验:深入源码解析》 Apache Lucene 是一个高性能、全文本搜索引擎库,被广泛应用于各种搜索应用中。本文主要针对Lucene 4.9版本进行探讨,通过源码阅读,帮助读者深入了解其内部工作原理和机制。 ...

    lucene4.9最全源代码

    通过深入学习和理解Lucene 4.9.0的源代码,开发者不仅可以掌握Lucene的基本用法,还能了解到其内部工作原理,进而能够定制自己的搜索解决方案,满足特定业务需求。同时,源代码中的注释和文档可以帮助我们更好地理解...

    IKAnalyzer LUCENE.4.9 中文分词的高亮显示

    "lib"可能包含了运行项目所需的依赖库,如IKAnalyzer的jar包和Lucene的库文件。 总之,通过集成IKAnalyzer和Lucene 4.9,我们可以构建一个能够对中文搜索结果进行关键词高亮显示的系统,从而提升用户体验。这个过程...

    lucene简单介绍及solr搭建使用

    标题“lucene简单介绍及solr搭建使用”涉及了两个主要的开源搜索技术:Lucene和Solr。Lucene是Java开发的一个全文检索库,而Solr则是基于Lucene构建的企业级搜索平台,提供了更高级的功能和管理界面。 **Lucene简介...

    Lucene的的学习资料及案例

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

    Lucene5学习之自定义Collector

    这篇博客“Lucene5学习之自定义Collector”显然聚焦于如何在Lucene 5版本中通过自定义Collector来优化搜索结果的收集过程。Collector是Lucene搜索框架中的一个重要组件,它负责在搜索过程中收集匹配的文档,并根据...

    Lucene5学习之拼音搜索

    本文将围绕“Lucene5学习之拼音搜索”这一主题,详细介绍其拼音搜索的实现原理和实际应用。 首先,我们需要理解拼音搜索的重要性。在中文环境中,由于汉字的复杂性,用户往往习惯于通过输入词语的拼音来寻找信息。...

    Lucene5学习之增量索引(Zoie)

    总结起来,Lucene5学习之增量索引(Zoie)涉及到的关键技术点包括: 1. 基于Lucene的增量索引解决方案:Zoie系统。 2. 主从复制架构:Index Provider和Index User的角色。 3. 数据变更追踪:通过变更日志实现增量索引...

    Lucene开源的全文检索框架

    ### Lucene开源的全文检索框架 #### 知识点一:Lucene的定义与特性 - **定义**:Lucene是Apache软件基金会Jakarta项目组下的一个子项目,它是一款用Java编写的开源全文检索引擎工具包。需要注意的是,Lucene本身并...

    Lucene5学习之分页查询

    本文将深入探讨"Lucene5学习之分页查询"这一主题,结合给定的标签"源码"和"工具",我们将讨论如何在Lucene5中实现高效的分页查询,并探讨其背后的源码实现。 首先,理解分页查询的重要性是必要的。在大型数据集的...

    Lucene5学习之排序-Sort

    “Lucene5学习之排序-Sort”这个标题表明了我们要探讨的是关于Apache Lucene 5版本中的排序功能。Lucene是一个高性能、全文检索库,它提供了强大的文本搜索能力。在这个主题中,我们将深入理解如何在Lucene 5中对...

    Lucene5学习之SpellCheck拼写纠错

    **标题:“Lucene5学习之SpellCheck拼写纠错”** 在深入探讨Lucene5的SpellCheck功能之前,首先需要理解Lucene是什么。Lucene是一个开源的全文检索库,由Apache软件基金会开发,它提供了高性能、可扩展的文本搜索...

    开源搜索框架lucene介绍

    ### 开源搜索框架Lucene介绍 #### 一、Lucene简介 Lucene是一款非常优秀且成熟的开源全文索引检索工具包,它完全采用Java语言编写,由Doug Cutting于1999年创建,并于2001年10月捐赠给了Apache基金会,成为Apache...

    Lucene3.3.0学习Demo

    **Lucene 3.3.0 学习Demo** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发。在3.3.0版本中,Lucene提供了强大的文本搜索功能,包括分词、索引创建、查询解析和结果排序等。这个"Lucene3.3.0学习Demo...

    Lucene5学习之Highlighte关键字高亮

    《Lucene5学习之Highlighter关键字高亮》 在信息技术领域,搜索引擎的使用已经变得无处不在,而其中的关键技术之一就是如何有效地突出显示搜索结果中的关键字,这就是我们今天要探讨的主题——Lucene5中的...

    Lucene5学习之Group分组统计

    "Lucene5学习之Group分组统计" 这个标题指出我们要讨论的是关于Apache Lucene 5版本中的一个特定功能——Grouping。在信息检索领域,Lucene是一个高性能、全文搜索引擎库,而Grouping是它提供的一种功能,允许用户对...

    Lucene5学习之FunctionQuery功能查询

    **标题解析:** "Lucene5学习之FunctionQuery功能查询" Lucene5是Apache Lucene的一个版本,这是一个高性能、全文本搜索库,广泛应用于搜索引擎和其他需要高效文本检索的系统。FunctionQuery是Lucene中的一种查询...

    基于Lucene和IK Analyzer的全文检索框架搭建

    介绍了全文检索的基本概念,详细说明了全文检索框架Lucene的用法,并提供了样例代码。

Global site tag (gtag.js) - Google Analytics