`
baobeituping
  • 浏览: 1064952 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Lucene3 建立索引

阅读更多

Lucene3在建立索引的API上有比较大的变化。直接上程序:

 

package lucene3;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;

import com.indexdb.Config;
import com.indexdb.DataBase;

public class DBIndex {

 /**
  * @param args
  */
 public static Connection DBConn = null;
 public static Statement Stmt = null;
 public static ResultSet Rs = null;
 public static String strArgs[] = new String[10];
 public static DataBase db = null;
 public static Config config = new Config();
 public static boolean dbflag=false; 
 public static  File INDEX_DIR = new File("d://lucene3");  
   
 public static boolean initDBConn()
 {
  
  try {
   System.out.println("开始数据库连接...");
   Class.forName("com.mysql.jdbc.Driver");
   DBConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8","root","root");
   System.out.println("数据库连接成功...");
   dbflag=true;
  } catch (Exception e) {
   e.printStackTrace();
  }
  
  return dbflag;
 }
 public static void main(String[] args) {
  if(initDBConn())
  {
   String sql = "select ID,Name from kindergarden_user";
    Date start = new Date();  
       try 
       {  
           IndexWriter writer = new IndexWriter(FSDirectory.open(INDEX_DIR),   
                   new StandardAnalyzer(Version.LUCENE_CURRENT),   
                   true, //true为覆盖原index;false为追加  
                   IndexWriter.MaxFieldLength.LIMITED);  
           System.out.println("Indexing to directory '" + INDEX_DIR + "'...");
           Stmt = DBConn.createStatement();
           Rs = Stmt.executeQuery(sql);
           while(Rs.next())
           {
            Document doc = new Document();
            Field f1 = new Field("ID",Rs.getString("ID"),Field.Store.YES,Field.Index.ANALYZED);
            Field f2 = new Field("Name",Rs.getString("Name"),Field.Store.YES,Field.Index.ANALYZED);
            doc.add(f1);
            doc.add(f2);
            writer.addDocument(doc);
           }
           System.out.println("Optimizing...");  
           writer.optimize();          //优化索引  
           writer.close();  
          
    
           Date end = new Date();  
           System.out.println(end.getTime() - start.getTime() + " total milliseconds");  
    
       }  
       catch (Exception e)  
       {  
           System.out.println(e.getMessage());  
           
       }  

  }

 }

}

 

 

创建索引的主要步骤:

1、先指定要搜索的文件(从数据库中搜索做为测试数据)和存放索引文件的目录(INDEX_DIR )

2、创建IndexWriter-需要提供索引目录、使用的Analyzer等。Analyzer用于解析文本内容,拆分成单词,这里我使用的是lucene自带的分词器。

3、递归遍历所有数据,生成Document,每一个文件对于一个Document。

4、将Document逐个加入索引

5、关闭IndexWriter,保存索引信息

 

说明:

1、索引文件可存放在目录或内存中,分别使用FSDirectory和RAMDirectory

2、每个Document类似与索引中的一行记录,具体的字段由Field标识,我这里加入了2个Field,分别是ID和NAME

3、Field中的枚举字段

     Field.Store.YES表示此字段内容需要在索引中保存

     Field.Index.NOT_ANALYZED表示此字段内容不需要做分词

      

 

几个基本对象间的关系如下图:

 

分享到:
评论

相关推荐

    Lucene3总体图_建索引_查询_数据库索引

    #### 四、Lucene3建立索引的步骤 1. **创建Directory对象**:指定索引文件的存储位置。 2. **创建IndexWriter对象**:初始化索引写入器,设置分析器、是否创建新索引等参数。 3. **获取源文件**:加载需要索引的...

    lucene 对 xml建立索引

    ### Lucene对XML文档建立索引的技术解析与实践 #### 一、引言 随着互联网技术的迅猛发展,非结构化数据(如XML文档)在企业和组织中的应用日益广泛。如何高效地处理这些非结构化的数据,特别是进行快速检索成为了一...

    Lucene.net建立索引,检索分页Demo

    **Lucene.net 知识点详解** Lucene.net 是 Apache Lucene 的 .NET 版本,...以上就是关于 Lucene.net 建立索引、检索及分页的关键知识点。理解并熟练运用这些概念,可以帮助开发者构建高效、灵活的全文搜索解决方案。

    关于lucene建立数据库索引的更新说明

    2. **索引构建的灵活性**:建立索引的方法并非固定不变,可以根据自己的需求和理解来设计。Lucene的核心原理是将数据转换为可搜索的索引结构。尽管可以借鉴他人的实现,但最好理解其原理,以便根据实际情况调整。 3...

    基于lucene技术的增量索引

    **基于Lucene技术的增量索引** 在信息技术领域,全文搜索引擎是处理大量数据查询的关键工具。Apache Lucene是一个开源的全文检索库,被广泛应用于构建高效、可扩展的搜索功能。本文将深入探讨如何利用Lucene实现...

    lucene全文检索简单索引和搜索实例

    3. 索引(Index):索引是Lucene的核心,它将原始文本转化为一种可快速搜索的数据结构。通过分词器(Analyzer),将文本分解成单词(Token),然后构建倒排索引(Inverted Index),使得我们可以高效地查找包含特定...

    Lucene结合Sql建立索引Demo源码.rar

    本源码演示了Lucene结合Sql建立索引,把Sql中的数据通过建立索引用Lucene来检索 【该源码由51aspx提供】   源码 " onerror="this.src='/images/ifnoimg.gif'" src="/uploads/allimg/090904/1039152O5-0.jpg...

    最简单的Lucene建立、搜索索引的方法

    **建立索引的步骤** 1. **添加依赖**:在MyEclipse10中,首先需要导入Lucene相关的jar包,这些通常包括lucene-core、lucene-analyzers、lucene-queryparser等,确保所有必要的组件都已引入。 2. **创建索引目录**...

    Lucene结合Sql建立索引

    Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个...本源码演示了Lucene结合Sql建立索引,把Sql中的数据通过建立索引用Lucene来检索 支持简单的中文分词,同时提供了Lucene.Net-2.0-004版本的源码给大家

    Lucene建立索引

    3. **Lucene建立索引步骤** - **初始化**: 创建`IndexWriter`对象,配置索引目录和索引参数。 - **文档分析**: 使用`Analyzer`对文档内容进行分词,去除停用词和标点符号,生成词项流。 - **添加文档**: 调用`...

    用Lucene.net对数据库建立索引及搜索

    《使用Lucene.NET对数据库建立索引及搜索》 在信息技术领域,搜索引擎是不可或缺的一部分,尤其是在处理大量数据时。Lucene.NET是一个强大的全文搜索引擎库,它允许开发人员在应用程序中集成高级搜索功能。本文将...

    Lucene结合Sql建立索引Demo源码

    Lucene结合Sql建立索引Demo源码 Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. Lucene的使用者不需要深入了解有关全文检索的...

    lucene索引结构原理.docx

    全文检索的关键在于通过建立索引,将原本非结构化的文本数据转化为结构化的表示,使得搜索过程可以高效进行。在Lucene中,这个过程包括分析文本、创建倒排索引等步骤,使得搜索操作从线性时间复杂度转变为对数时间...

    用lucene对数据库建立索引及搜索

    **使用Lucene对数据库建立索引及搜索** Lucene是一个高性能、可伸缩的信息检索库,它是Apache软件基金会的顶级项目之一。它提供了一个简单但功能强大的API,用于在各种数据源上创建全文搜索引擎,包括数据库。在本...

    Lucene 索引的简单使用

    - **分词器(Tokenizer)**:分词器将输入的文本分解为一系列的词语,这是建立索引的第一步。 - **分析器(Analyzer)**:分析器结合了分词器、过滤器等,负责对文本进行预处理,如去除停用词、词形还原等。 ### 2...

    lucene实现索引查询

    7. **写入Document并建立索引**:调用`IndexWriter.addDocument()`方法将Document写入索引。 8. **优化索引**:`IndexWriter.optimize()`可以合并索引段,提高查询性能。 9. **关闭索引写入器**:完成所有操作后,...

    Lucene检索文本,建立索引

    在这个场景中,我们将探讨如何利用Lucene来检索文本并建立索引,同时结合Struts框架构建一个Web程序。 首先,**Lucene** 是一个开源的Java库,它提供了完整的搜索功能,包括分词、索引创建、查询解析和结果排序。它...

    Lucene建立索引jar包和Paoding分词jar包

    在建立索引时,Lucene会对输入的文档进行分析,将其拆分成一个个的词汇,并为每个词汇创建一个倒排表,记录该词汇出现在哪些文档以及在文档中的位置信息。lucene-core-3.0.0.jar是Lucene的核心库,包含了构建和查询...

Global site tag (gtag.js) - Google Analytics