lkjust08 发表于 2013-2-6 09:56:31

luence学习(一)

      因单位很多系统都是用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/               _____________            | DBIndex   |               -------------            / SQL: select \结果输出:results(record(field1,field2..) record(fieDocument:一个需要进行索引的“单元”,一个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.jspThe constructor QueryParser(String, Analyzer) is undefined95: 96:               Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);         //construct our usual analyzer97:               try {98:                         QueryParser qp = new QueryParser("contents", analyzer);99:                         query = qp.parse(queryString); //parse the 100:               } catch (ParseException e) {                        //query and construct the Query101:                                                                     //object 这是因为luceneweb这个web应用用的是lucene早期版本的API写的,所以在这里运行报错。
 
至于lucene的应用示例,je上很多,大家可以参考下面这篇文章,写的很详细,这里就不多说了。http://www.iteye.com/topic/39597
 
 
页: [1]
查看完整版本: luence学习(一)