当前位置:首页 > Web开发 > 正文

相信很多朋友们都用上了

2024-03-31 Web开发

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

原文链接:https://blog.csdn.net/xiangxizhishi/article/details/74581950

Lucene是开放源代码的全文搜索引擎工具包,凭借着其强劲的搜索成果和简单易用的实现,在国内已经很普及,甚至一度呈现了言搜索必称Lucene的盛景。上个月Lucene的开发团队颁布了 ,相信很多伴侣们都用上了。在国内对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的搜索算法不适用于网格计算;

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33057.html