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/ _____________ | 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
上一篇: luence学习(一)