欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

luence学习(一)

程序员文章站 2022-03-08 13:23:03
...

      因单位很多系统都是用lucene作为搜索引擎,故本人最近也抽出了一点时间看了看lucene特在此做下笔记。

      lucene一个开源项目,目前很成功,依本人从网上搜的内容来看,lucene不是一个完整的全文索引应用,而是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。

      大家可以参考http://www.chedong.com/tech/lucene.html了解更多的东西。

      个人理解,lucene是将检索内容处理它自已可以快速检索的特定格式的内容。然后通过lucene,我们能够快速的检索。由此看来luence提供了两大部分重要的API:1,抽取索引,2,检索索引。

      那么lucene是怎么从数据中抽取索引,个人觉得luence只是提供了把必要信息组成lucene能够识别的索引文件,对于怎么从源数据中抽索引,lucene没有提供,其实luence也没法提供,因为来源数据太多。下面拿lucene数据库数据结构作个比较:

Lucene 数据库
索引数据源:doc(field1,field2...) doc(field1,field2...)
                  \  indexer /
                 _____________
                | Lucene Index|
                --------------
                 / searcher \
 结果输出:Hits(doc(field1,field2) doc(field1...))
索引数据源:record(field1,field2...) record(field1..)
              \  SQL: insert/
               _____________
              | DB  Index   |
               -------------
              / SQL: select \
结果输出:results(record(field1,field2..) record(fie
Document:一个需要进行索引的“单元”,一个Document由多个字段组成 Record:记录,包含多个字段
Field:字段 Field:字段
Hits:查询结果集,由匹配的Document组成 RecordSet:查询结果集,由多个Record组成

 

通过这个表格应该很清楚看懂lucene的索引与数据库里的索引的结构。

 

      lucene址:http://www.apache.org/dyn/closer.cgi/lucene/java/,这里我下载的是3.0.0的版本,打开压缩包后,里面的scr夹子和lucene-core-3.0.0.jar,lucene-demos-3.0.0.jar,luceneweb.war,src下有一个demo和jsp,是两个lucene的示例的源码,你可以用一些IDE新建一个工程,将demo的源码导进去,要运行的话得将lucene-core-3.0.0.jar加入到classpath中,而luceneweb.war我们直接拷贝到tomcat的webapp下,启动tomcat就行了,然后可以访问luceneweb,当我们输入检索词后,点击搜索按钮后发现报错:

An error occurred at line: 98 in the jsp file: /results.jsp
The constructor QueryParser(String, Analyzer) is undefined
95: 
96:                 Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);           //construct our usual analyzer
97:                 try {
98:                         QueryParser qp = new QueryParser("contents", analyzer);
99:                         query = qp.parse(queryString); //parse the 
100:                 } catch (ParseException e) {                          //query and construct the Query
101:                                                                       //object

 这是因为luceneweb这个web应用用的是lucene早期版本的API写的,所以在这里运行报错。

 

至于lucene的应用示例,je上很多,大家可以参考下面这篇文章,写的很详细,这里就不多说了。http://www.iteye.com/topic/39597