`

lucene 说明和例子

 
阅读更多

Lucene的使用,简单来说可以划分为两种类型,一是建立索引,二是搜索内容。

一、建立索引的五个基础类 Document, Field, IndexWriter, Analyzer, Directory 

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

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

3、Analyzer类:用来对文档内容进行分词处理,Analyzer 类是一个抽象类,它有多个实现,针对不同的语言和应用需要选择适合的Analyzer,Analyzer会把分词后的内容交给IndexWriter来建立索引。

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

5、Directory 类:表示索引文件存储位置的抽象类。有两个常用的子类:

    * FSDirectory — 在实际文件系统中存储索引的 Directory 实现。该类对于大型索引非常有用。
    * RAMDirectory — 在内存中存储所有索引的实现。该类适用于较小的索引,可以完整加载到内存中,在应用程序终止之后销毁。由于索引保存在内存中,所以速度相对较快。

 

二、搜索内容的四个基础类:Searche、Term、Query和TopDocs    

1、Searcher 是一个抽象基类,包含各种超负荷搜索方法。IndexSearcher 是一个常用的子类,允许在给定的目录中存储搜索索引。Search 方法返回一个根据计算分数排序的文档集合。Lucene 为每个匹配给定查询的文档计算分数。IndexSearcher 是线程安全的;一个实例可以供多个线程并发使用。

2、Term 是搜索的基本单位。它由两部分组成:单词文本和出现该文本的字段的名称。Term 对象也涉及索引编制,但是可以在 Lucene 内部创建。

3、Query 和子类

Query 是一个用于查询的抽象基类。搜索指定单词或词组涉及到在项中包装它们,将项添加到查询对象,将查询对象传递到 IndexSearcher 的搜索方法。

Lucene 包含各种类型的具体查询实现,比如 TermQuery、BooleanQuery、PhraseQuery、PrefixQuery、RangeQuery、 MultiTermQuery、FilteredQuery、SpanQuery 等。以下部分讨论 Lucene 查询 API 的主查询类。

4、TopDocs    封装搜索结果以及 ScoreDoc 的总数

 
一个最简单的Lucene例子,展示Lucene中重要的几个类IndexWriter、Directory、Analyzer、Document、Field、IndexSearcher、Term、Query、TermQuery、TopDocs的简单用法。


package org.apache.lucene.demo;

import java.io.IOException;

import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.RAMDirectory;

public class LuceneTest {

        public static void main(String[] args) throws IOException {
            RAMDirectory directory = new RAMDirectory();
            IndexWriter writer =
              new IndexWriter(directory, new SimpleAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED);
               
            Document doc = new Document();
            doc.add(new Field("partnum", "Q36", Field.Store.YES, Field.Index.NOT_ANALYZED));  
            doc.add(new Field("description", "Illidium Space Modulator", Field.Store.YES, Field.Index.ANALYZED));
            writer.addDocument(doc);
            writer.close();

            IndexSearcher searcher = new IndexSearcher(directory);
            Query query = new TermQuery(new Term("partnum", "Q36"));  
            TopDocs rs = searcher.search(query, null, 10);
            System.out.println(rs.totalHits);

            Document firstHit = searcher.doc(rs.scoreDocs[0].doc);
            System.out.println(firstHit.getField("partnum").name());
        }
}

 

更多>>  http://wiki.apache.org/lucene-java/HowTo

来自:http://blog.csdn.net/teamlet/article/details/5715187

分享到:
评论

相关推荐

    Lucene4.7-Web 例子

    以上就是关于"Lucene4.7-Web例子"的详细解析,通过这个示例,开发者可以了解到如何在实际的Web环境中结合SpringMVC和MyBatis3使用Lucene4.7构建高效搜索引擎。实践中,可以参考提供的"gusao.sql"数据库脚本,"请读我...

    \Lucene Nutch和安装说明文旦

    标题中的“Lucene Nutch和安装说明文档”暗示了我们要讨论的是一个关于Apache Lucene和Nutch的安装过程。Lucene是一个全文搜索引擎库,它提供了核心的搜索功能,而Nutch则是一个基于Lucene的开源网络爬虫项目,用于...

    Lucene学习例子与文档

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

    Lucene5.2.1 入门学习例子

    Lucene5.2.1 入门学习例子. 这是别人的例子源码。可以参考。内有使用说明。

    lucene 例子以及所需jar包

    Lucene 是一个全文搜索引擎库,由 Apache 软件基金会开发并维护。它提供了一个可扩展的、高性能的搜索框架,使得...记得阅读提供的安装说明,了解如何正确地导入和运行示例,从而更好地理解和掌握 Lucene 的使用方法。

    lucene实例项目及其打包文件

    这个实例项目是基于Lucene官网提供的,旨在帮助开发者更好地理解和使用Lucene进行文本搜索功能的实现。在这个压缩包中,你将找到一个完整的Lucene示例以及打包后的文件,这将有助于你在Eclipse环境下进行学习和实践...

    Lucene与数据库结合示例(加双关键字高亮)

    描述中的“这是我自已写的Lucene与Mysql结合的例子”,说明作者创建了一个实际项目,将Lucene的功能与MySQL数据库存储的数据进行了集成。"只是个简单的示例"暗示这可能是初级或中级难度的教程,适合初学者或有一定...

    开源搜索框架lucene介绍

    为了更好地理解Lucene的工作流程,我们可以通过一个简单的例子来进行说明。假设我们有两个文档: - 文档1:“Tom lives in Guangzhou, I live in Guangzhou too.” - 文档2:“He once lived in Shanghai.” 1. **...

    Lucene_in_ Action

    2. **基本安装与配置**:书中会详细说明如何在开发环境中安装和配置Lucene,包括依赖库的获取、集成到Java项目中的步骤以及必要的环境设置。 3. **索引过程**:索引是Lucene工作的核心环节,书中会详细解释如何将...

    mycode-luceneDemo:lucene+springMVC的例子

    【描述】"mycode-luceneDemo,lucene+springMVC的例子"进一步确认了这是一个使用Lucene和SpringMVC的代码示例项目,可能是为了教学或演示目的。 【标签】"Java"表明这个项目是用Java编程语言实现的,这是Lucene和...

    Lucene In Action

    通过这个例子,读者可以立即上手实践,并根据自己的需求进行修改和扩展。 - **应用场景与自定义需求适应性**:此示例程序可以作为基础模板,适用于多种不同的场景,如小型网站的搜索功能实现、个人文档管理系统等。...

    [JAVA源码]结合lucene版的公交搜索系统下载

    此外,还可能有一个README文件,解释了如何编译和运行项目,以及任何依赖项或设置说明。 在深入研究这个项目时,你可以期待看到以下几个关键知识点: 1. **Lucene基础**:了解如何创建和管理Lucene的索引,包括...

    jpa-lucene-spring-demo:使用JPA,Lucene,Spring,DBUnit和JMockit的演示项目-持久并搜索简单的Book数据

    jpa-lucene-spring-demo Javalobby上的完整文章: : 也在博客上: : 使用JPA,Lucene,Spring,DBUnit和JMockit的演示项目-持久并搜索... 该示例很简单,但是说明了如何连接基础结构以集成Lucene和JPA的基本概念。

    Solr 教程 pdf

    - 提供了一个简单的例子,包括Solr Schema设计、构建索引和搜索测试。 - 探讨了搜索引擎的规划设计、配置,以及索引操作和搜索语法。 使用SolrJ时,可调用搜索接口实例,用SolrJ添加数据和读取数据,创建查询,以及...

    相似图片搜索原理的Java实现源码范例和详细说明(由浅入深,深度解读在资料后半部分).docx

    在这个例子中,`indexImages`方法用于将图片的特征向量存储到Lucene索引中,而`searchSimilarImages`方法则根据输入的特征向量搜索最相似的图片。 总结来说,实现相似图片搜索涉及图像处理、深度学习和信息检索等多...

    solr从入门到精通教程

    - 一个简单的例子:提供了一个案例来说明如何设计SolrSchema、构建索引以及进行搜索测试。 - 搜索引擎的规划设计:阐述了如何定义业务模型、定制索引服务和定制搜索服务。 - 搜索引擎配置:讨论了如何定制索引结构...

    c# 开源搜索引擎完整的例子

    以下是对这个开源项目的可能知识点的详细说明: 1. **数据收集**:搜索引擎的第一步是爬取网页内容。开源项目可能包含了使用C#实现的网络爬虫,它通过HTTP请求获取网页,并解析HTML来提取相关信息,如URL、标题、...

    solrconfig.xml和schema.xml说明

    ### Solrconfig.xml 和 Schema.xml 说明 #### Solrconfig.xml 概述 Solrconfig.xml 是 Apache Solr 的核心配置文件之一,主要用于定义 Solr 实例如何处理文档的索引与查询请求。该文件中包含了多种配置项,用于...

    中文分词器ShuzhenAnalyzer-1.1.0提供下载

    ShuzhenDemo.java是示例代码,通常包含如何使用ShuzhenAnalyzer进行分词的实例,开发者可以通过这个例子了解如何在实际项目中集成和使用这款分词器。readme.txt文件则是说明文档,通常会提供关于安装、配置、使用等...

Global site tag (gtag.js) - Google Analytics