lucene使用记

来源:互联网 发布:mac菜单栏显示网速 编辑:程序博客网 时间:2024/05/18 03:53
lucene是用java做的一个搜索引擎,java web的高性能开源程序包,最新版本是1.9.1。它可以搜索文本、网页、数据库文件。lucene将每条记录看作一个document对象,记录的字段看作是document的field对象,对field对象或者其子内容建立倒排档,然后通过各种analyzer进行搜索时的    lucene是用java做的一个搜索引擎,java web的高性能开源程序包,最新版本是1.9.1。它可以搜索文本、网页、数据库文件。lucene将每条记录看作一个document对象,记录的字段看作是document的field对象,对field对象或者其子内容建立倒排档,然后通过各种analyzer进行搜索时的匹配。下面对其数据库检索工作过程作一简单描述,更详细文献参阅车东先生的文献、lucene1.9.1 api和lucene官方网站。
    建立索引的过程。
    首先,通过DAO遍历整个数据库,提取每条记录的每个元组。lucene根据对文件的字段是否被索引、被存储和被标记化,分为Keyword、Text(deprecated)、UnIndexed、UnStored几种转换类型。这几个类型是Field的静态方法,可以把每条记录的元组转换为field。然后建立记录对应的document对象,通过document对象的add()把field添加到document对象。这样,通过DA操作建立了数据库记录与document对象的意义对应关系。建立一个IndexWriter对象,通过IndexWriter对象的addDocument()把刚才的document对象加入索引,同时这也是建立索引的过程。IndexWriter的构造器有三个参数,第一个是索引建立的路径,第二个是分析器(很重要,直接关系到检索的准确性,可以建立各种语言索引!!!),第三个是判断追加索引还是覆盖已存在的索引。由于这是一个IO操作,所以注意关闭IndexWriter对象和异常处理。这样,索引就建立起来了。
    使用搜索的过程。
    首先通过Query或者其子类建立查询语句(这是建立复杂查询的全部!!!),Query的静态方法parse()非常重要,功能也非常强大,可以参看api。然后,通过indexSearcher获取索引分析器,其构造器的参数是索引的地址。通过indexSearcher的search(Query query)方法获得Hits对象。Hits对象是Document对象集合。通过遍历Hits对象的doc()方法就可以得到各个Document对象,通过document对象的get(“field name”)可以获得各个原始记录字段。这样就实现了索引与记录的转换。
    lucene结构良好、开源,可以在它基础上建立更加复杂的应用。我只是简单的把它嵌入到自己的系统中,使用的是sql server2000,tomcat4.0,lucene1.9.1。奇怪的是,许多lucene1.9.1中deprecated方法都可以使用,但是新的方法却不支持,竟然有时候编译不通过。
    如果有深入lucene研究的爱好者,让我们一起交流。 
原创粉丝点击