六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 74|回复: 0

luence学习(一)

[复制链接]

升级  30%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
15
 楼主| 发表于 2013-2-6 09:56:31 | 显示全部楼层 |阅读模式
      因单位很多系统都是用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.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
 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表