about Lucene

Lucene是开放源代码的全文搜索引擎工具包,凭借着其强劲的搜索功能和简单易用的实现,在国内已经很普及,甚至一度出现了言搜索必称Lucene的盛景。上个月Lucene的开发团队发布了 Java Lucene 2.3.1 ,相信很多朋友们都用上了。在国内对Lucene的介绍可以分为3块儿:

第一类是:以车东 的Lucene:基于Java的全文检索引擎简介 为代表的基础入门介绍;
第二类是Lucene倒排索引原理和Lucene软件包、实现类的介绍;
第三类是以中文分词为中心的介绍;

任何一个软件,包括所有伟大的软件都有这样或者那样的“缺点”和各自适用的领域,Lucene也不例外。在国内对Lucene这个软件包的批评,似乎没有 看到过。可能大家都忙于做项目,纵然Lucene有再大的缺陷,凭借着Lucene良好的口碑,也不会说上一句不是。

今天在阅读LingWay (一个做垂直的语义搜索引擎)的CTO Cedric Champeau 先生的博客是发现有一篇题为:Why lucene isn't that good 为什么Lucene并不是想象的那么棒 的文章:Champeau 开门见山指出了Lucene的6大不足之处,鉴于 Lingway 公司使用Lucene已有好几年的历史,我相信Cedric Champeau的对Lucene的评论还是值得一读。

不选择使用Lucene的6大原因:

6、Lucene 的内建不支持群集。
Lucene是作为嵌入式的工具包的形式出现的,在核心代码上没有提供对群集的支持。实现对Lucene的群集有三种方式:1、继承实现一个 Directory;2、使用Solr 3、使用 Nutch+Hadoop;使用Solr你不得不用他的Index Server ,而使用Nutch你又不得不集成抓取的模块;

5、区间范围搜索速度非常缓慢;
Lucene的区间范围搜索,不是一开始就提供的是后来才加上的。对于在单个文档中term出现比较多的情况,搜索速度会变得很慢。因此作者称Lucene是一个高效的全文搜索引擎,其高效仅限于提供基本布尔查询 boolean queries;
4、排序算法的实现不是可插拔的,因为贯穿Lucene的排序算法的tf/idf 的实现,尽管term是可以设置boost或者扩展Lucene的Query类,但是对于复杂的排序算法定制还是有很大的局限性;

3、Lucene的结构设计不好;
Lucene的OO设计的非常糟,尽管有包package和类class,但是Lucene的设计基本上没有设计模式的身影。这是不是c或者c++程序员写java程序的通病?

A、Lucene中没有使用接口Interface,比如Query 类( BooleanQuery, SpanQuery, TermQuery...) 大都是从超类中继承下来的;

B、Lucene的迭代实现不自然: 没有hasNext() 方法, next() 返回一个布尔值 boolean然后刷新对象的上下文;

2、封闭设计的API使得扩展Lucene变得很困难;

参考第3点;

1、Lucene的搜索算法不适用于网格计算;

详情可以查看:Cedric Champeau 先生的博客:Why lucene isn't that good 为什么Lucene并不是想象的那么棒

时间: 2024-08-22 09:30:38

about Lucene的相关文章

lucene 搜索-lucene对文件名、文件路径进行索引,搜索的时候不能检索出来

问题描述 lucene对文件名.文件路径进行索引,搜索的时候不能检索出来 如题,lucene对文件名.文件路径都进行了索引,因为文件名.文件路径都包含特殊字符斜杠(/)和点(.),导致搜索的时候输入文件名或者路径,都无法搜索,使用/对字符进行转义也不行,请帮忙. 部分代码如下: protected Document getDocument(File f) throws IOException { Document doc = new Document(); doc.add(new Field("

在应用中加入全文检索功能——基于Java的全文索引引擎Lucene简介

全文检索|索引 内容摘要: Lucene是一个基于Java的全文索引工具包. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基于词库和自动切分词算法的比较 具体的安装和使用简介:系统结构介绍和演示 Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展 从Lucene我们还可以学到什么 基于Java的全文索引/检索引擎--Lucene Lucene不是一个完整的全

lucene,你也会(15篇)——第一篇 快速入门

日常开发中,相信大家经常会用like去匹配一些数据,同时我们也知道,like往往会导致全表扫描,当数据量越来越大的时候,我们会纠结于 数据库的龟速查找,此时我们必须另寻蹊跷,这时lucene就可以大显身手了. 首先我们做一个demo,向数据库中插入10w条数据,总共778M. 接下来,我们搜索下新闻内容中包含"流行"的记录. mmd,检索一下要78s,是谁都要砸了面前的破机子. 下面我们来看看lucene的效果怎么样.下载地址:http://incubator.apache.org/l

使用Lucene索引和检索POI数据

1.简介 关于空间数据搜索,以前写过<使用Solr进行空间搜索>这篇文章,是基于Solr的GIS数据的索引和检索. Solr和ElasticSearch这两者都是基于Lucene实现的,两者都可以进行空间搜索(Spatial Search),在有些场景,我们需要把Lucene嵌入到已有的系统提供数据索引和检索的功能,这篇文章介绍下用Lucene如何索引带有经纬度的POI信息并进行检索. 2.环境数据 Lucene版本:5.3.1 POI数据库:Base_Station测试数据,每条数据主要是I

用PHP调用Lucene包来实现全文检索

全文检索 由于工作需要,需要使用PHP实现对网站内大量数量进行全文检索,而且目前最流行的全文检索的搜索引擎库就是Lucene了,它是Apache Jakarta的一个子项目,并且提供了简单实用的API,用这些API,就可以对任何基本文本的数据(包括数据库)进行全文检索.因为PHP本身就支持调用外部Java类,所以先用Java写了一个类,这个类通过调用Lucene的API,实现了两个方法: public String createIndex(String indexDir_path,String

lucene 高亮-Lucene Highlighter 高亮词前后的词的个数?

问题描述 Lucene Highlighter 高亮词前后的词的个数? highlighter.setTextFragmenter(new SimpleFragmenter(15));//高亮词前后15 个字?

基于Lucene/XML的站内全文检索解决方案

xml|解决|全文检索 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明http://www.chedong.com/tech/weblucene.html 内容摘要:为Lucene做一个通用XML接口一直是我最大的心愿:更方便的在WEB应用中嵌入全文检索功能 提供了XML的数据输入接口:适合将原有基于各种数据库的数据源导入到全文索引中,保证了数据源的平台无关性: 通过了基于XML的搜索结果输出:方便了通过XSLT进行前台的结果显示:     MySQL  \ 

关于lucene发展和多语言实现的方向

关于lucene发展和多语言实现的方向    多语言lucene的发展无疑是基于java lucene的.一切的功能特性和兼容性的问题都要以java lucene为主.java lucene是其他语言lucene发展的鼻祖.那么多语言lucene的发展应该怎么办呢?看看下面的文字吧:There is a concerted effort to develop a SWIG Lucene and there is also a CLucene and an active Lucene4C proj

A simple example about full-text search based Java:Lucene

索引源代码:package lucene; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author Shirley * @version 1.0 */ import org.apache.lucene.index.*;import org.apa