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

Lucene-2.2.0 源代码阅读学习(2)

阅读更多

IndexWriter是一个非常重要的工具。建立索引必须从它开始。而且,从它的构造函数开始。

Document和Field是Lucene中两个最重要的概念。在建立索引的时候,也就是实例化一个索引器IndexWriter的之前,必须通过已经建立好的Document逻辑文件,将Document的对象添加到IndexWriter实例中,才能算是建立索引。

Document汇集数据源,这个数据源是通过Field来构造的。构造好Field之后,将每个Field对象加入到Document之中,可以通过Document来管理Field,然后将聚集的Document加入到IndexWriter中,建立索引,写入指定的Directory,为检索做准备。

写一个建立索引,然后读取索引的例子,代码如下:

package org.shirdrn.lucene;

import java.io.File;
import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.LockObtainFailedException;

public class MyIndexWriter {
public static void main(String[] args){
   File myFile = new File("E:\\Lucene\\myindex");
   try {
    Document myDoc = new Document();
    Field myFieldNo = new Field("myNo","SN-BH-19830119",Field.Store.YES,Field.Index.UN_TOKENIZED);
    Field myFieldName = new Field("myName","异域王者",Field.Store.YES,Field.Index.UN_TOKENIZED);
    Field myFieldGender = new Field("myGender","男",Field.Store.YES,Field.Index.UN_TOKENIZED);
    Field myFieldDescb = new Field("myDescb","2003年,数学系,信息与计算科学;2007年,计算机系,软件与理论",Field.Store.YES,Field.Index.UN_TOKENIZED);
    myDoc.add(myFieldNo);
    myDoc.add(myFieldName);
    myDoc.add(myFieldGender);
    myDoc.add(myFieldDescb);
    Field hisFieldNo = new Field("hisNo","SN-BH-19860101",Field.Store.YES,Field.Index.UN_TOKENIZED);
    Field hisFieldName = new Field("hisName","风平浪静",Field.Store.YES,Field.Index.UN_TOKENIZED);
    Field hisFieldGender = new Field("hisGender","男",Field.Store.YES,Field.Index.UN_TOKENIZED);
    Field hisFieldDescb = new Field("hisDescb","2003年,历史系,世界史;2007年,计算机系,人工智能",Field.Store.YES,Field.Index.UN_TOKENIZED);
    myDoc.add(hisFieldNo);
    myDoc.add(hisFieldName);
    myDoc.add(hisFieldGender);
    myDoc.add(hisFieldDescb);
    IndexWriter myWriter = new IndexWriter(myFile,new StandardAnalyzer(),true);   
//   构造一个索引器,true指定了:向已经存在的索引中追加索引
    myWriter.addDocument(myDoc);
    myWriter.close();    // 关闭索引器,将追加的索引文件写入到索引目录中
    IndexReader myReader = IndexReader.open(myFile);   
// 读取索引
    for(int i=0;i<myReader.numDocs();i++){
     System.out.println(myReader.document(i));    //   输出索引文件的信息
    }
   } catch (CorruptIndexException e) {
    e.printStackTrace();
   } catch (LockObtainFailedException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
}

}

这里,使用File myFile = new File("E:\\Lucene\\myindex");作为一个参数来构造一个索引器。

运行程序,可以在目录E:\Lucene\myindex下看到生成的索引文件,一共有三个文件:

_0.cfs

segments.gen

segments_3

第一个是.cfs格式的,成为复合索引格式;第三个segments_3是一个索引段。

同时,可以在控制台上看到输出结果:

Document<stored/uncompressed,indexed<myNo:SN-BH-19830119> stored/uncompressed,indexed<myName:异域王者> stored/uncompressed,indexed<myGender:男> stored/uncompressed,indexed<myDescb:2003年,数学系,信息与计算科学;2007年,计算机系,软件与理论> stored/uncompressed,indexed<hisNo:SN-BH-19860101> stored/uncompressed,indexed<hisName:风平浪静> stored/uncompressed,indexed<hisGender:男> stored/uncompressed,indexed<hisDescb:2003年,历史系,世界史;2007年,计算机系,人工智能>>

因为上面程序中使用了IndexReader,先打开索引文件,然后通过IndexReader的document()来读取索引文件的内容。

分享到:
评论

相关推荐

    lucene-analyzers-2.2.0.jar

    lucene-analyzers-2.2.0.jarlucene-analyzers-2.2.0.jarlucene-analyzers-2.2.0.jarlucene-analyzers-2.2.0.jarlucene-analyzers-2.2.0.jarlucene-analyzers-2.2.0.jarlucene-analyzers-2.2.0.jarlucene-analyzers-...

    Lucene-2.3.1 源代码阅读学习

    Lucene-2.3.1 源代码阅读学习

    lucene-highlighter-2.2.0.jar

    lucene-highlighter-2.2.0.jarlucene-highlighter-2.2.0.jarlucene-highlighter-2.2.0.jarlucene-highlighter-2.2.0.jarlucene-highlighter-2.2.0.jarlucene-highlighter-2.2.0.jarlucene-highlighter-2.2.0.jar

    lucene-2.2.0zip

    编写搜索引擎时可以使用,希望能够帮到大家,jar包对初学者有用

    基于JAVA的搜索引擎 lucene-2.2.0

    在前面Lucene-2.2.0 源代码阅读学习(1)中,根据Lucene提供的一个Demo,详细分析研究一下索引器org.apache.lucene.index.IndexWriter类,看看它是如果定义的,掌握它建立索引的机制。 通过IndexWriter类的实现源代码...

    lucene-2.2.0-src

    lucene源程序,很棒的.用了就知道

    lucene-analyzers-smartcn-7.7.0-API文档-中文版.zip

    赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-analyzers-smartcn-7.7.0.pom; 包含翻译后的API文档:lucene-analyzers-smartcn-7.7.0-javadoc-API文档-中文(简体)版....

    lucene-4.8.0源代码,比较全

    一个开源的搜索引擎 lucene-4.8.0源代码,比较全

    lucene-highlighter-2.2.0-src.zip

    Lucene高亮显示的源码,这个源码太难找了,这里共享给大家,希望有所帮助!

    lucene-core-7.7.0-API文档-中文版.zip

    赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene-core-7.7.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene...

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    lucene-5.3.1源代码

    lucene 5.3.1源代码,可用来实现全文检索,源自官网。

    lucene-analyzers-common-6.6.0-API文档-中文版.zip

    赠送源代码:lucene-analyzers-common-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-analyzers-common-6.6.0.pom; 包含翻译后的API文档:lucene-analyzers-common-6.6.0-javadoc-API文档-中文(简体)版.zip;...

    lucene-core-2.1.0.jar

    这是一个java开发用的.jar文件,用它和Lucene-core-2.0.0.jar可以实现搜索引擎

    lucene-core-7.2.1-API文档-中文版.zip

    赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene-core-7.2.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene...

    lucene-suggest-6.6.0-API文档-中文版.zip

    赠送源代码:lucene-suggest-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-suggest-6.6.0.pom; 包含翻译后的API文档:lucene-suggest-6.6.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache....

    lucene-backward-codecs-7.3.1-API文档-中英对照版.zip

    赠送源代码:lucene-backward-codecs-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-codecs-7.3.1.pom; 包含翻译后的API文档:lucene-backward-codecs-7.3.1-javadoc-API文档-中文(简体)-英语-对照...

    lucene-core-6.6.0-API文档-中文版.zip

    赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene-core-6.6.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene...

    compass-2.2.0.zip

    compass-2.2.0.zip,Compass是第一个实现java搜索引擎的开源框架,它是基于Lucene之上的,提供更简单的搜索引擎API,事务支持,对象到搜索引擎映射

    lucene-analyzers-smartcn-7.7.0-API文档-中英对照版.zip

    赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-analyzers-smartcn-7.7.0.pom; 包含翻译后的API文档:lucene-analyzers-smartcn-7.7.0-javadoc-API文档-中文(简体)-英语...

Global site tag (gtag.js) - Google Analytics