我正在为java寻找关键字索引库。我在Google搜索中找到了Lucene。我认为它是一个非常受欢迎的,但只是想知道它是否是最好的(在速度性能方面)索引库(当然,它可以是主观的,但你的意见应该对我这样的初学者来说足够好)?此网站http://snippets.dzone.com/posts/show/4020中的示例是否足够好,或者您有更好的推荐?提前谢谢。
答案 0 :(得分:2)
我们已经针对MSSQL的全文搜索测试了Lucene(但.Net版本)。这是相当困难的比较,因为两个系统都以无与伦比的方式提供索引,但是我们为明确定义的任务执行索引 - 索引一些具有多个文本字段的产品(因此文件在搜索结果中具有不同的权重)并提供用户搜索这些产品。 / p> Lucene获胜是因为我们完全控制了复合查询,解决了哪些索引在内存中,哪些索引存储在文件系统中,我们没有受到语言包的限制(MSSQL FTS支持的语言列表有限)。 Lucene允许我们使用非静态噪声词典(对于多种产品类别,我们使用了不同的噪声集合)。
因此很难谈论纯粹的性能,但Lucenr丰富的功能开辟了许多优化方式。
答案 1 :(得分:1)
Lucene是一款非常棒的搜索工具,但我也恳请您通过RESTful / HTTP接口查看使用Lucene构建的成熟搜索服务器Apache Solr。
答案 2 :(得分:0)
内容管理软件Alfresco必须尽可能快地摄取大量文档,所以我猜他们使用的索引器是他们能找到的最快的。 是的,他们使用Lucene。
答案 3 :(得分:0)
像MySQL这样的数据库有一个可以使用的集成全文索引(请参阅:MySQL Index creation)。这非常快,但不像Lucene那样容易配置。我有一天尝试了它并没有得到我想要的结果(特别是因为包含的标记器不能像Lucene那样容易交换)。
另一种方法是使用一个简单的数据库表,其中一列包含索引术语,另一列指向发布(包含术语的所有文档)列表。我的同事就这样做了,并说他评估了对Lucene的表现,结果是dabase要快得多。
然而作为结论我必须说,每当我尝试一些不同的技术时,我就会很快回到Lucene。该文档是我读过的最好的文档之一,配置也很简单。