Lucene vs“select .. like ..”

时间:2011-02-15 16:19:40

标签: java lucene

我正在编写用户创建内容的Web应用程序(论坛上的帖子)。使用选择..比如..还是Lucene更好? Lucene在非高级搜索方面有什么优势。

3 个答案:

答案 0 :(得分:2)

Lucene非常强大/灵活,但SELECT ... LIKE可能是一个很好的起点。使用SELECT ... LIKE完成你的应用程序然后你可以添加Lucene 如果你需要,因为这是更多的工作。

您可能希望让自己的应用程序充分用于证明Lucene时间投资的合理性。

简短的回答:SELECT ... LIKE可能已经足够开始了。

答案 1 :(得分:1)

Leucene对于大型数据集可能会更快,因为它可以使用全文索引。如果select ... like的参数不以通配符开头,则传统关系数据库上的like查询通常只能使用索引。例如:

select * from mytable where mycolumn like 'fred%'; -- may use an index on mycolumn

select * from mytable where mycolumn like '%fred%'; -- cannot use an index on mycolumn

如果你需要做很多第二种查询,那么它不可能很好地扩展。如果您将MySQL与MyISAM表引擎一起使用(默认情况下,但不支持外键),则可以使用MySQL's full text indexing capabilities,但语法不同且特定于MySQL。它不使用like关键字。

答案 2 :(得分:0)

你不应该考虑自己搞乱Lucene。相反,您应该尝试使用SolrElastic Search等独立产品或Hibernate Search等库。不幸的是,我个人最喜欢的Compass现在已被抛弃。我刚刚尝试过Hibernate Search并将其放弃以支持Compass。现在,看起来Elastic Search可能是提供高级搜索功能的最简单方法。

此外,一些RDBMS支持或多或少的高级全文搜索功能,例如MySQL,MS SQL和Oracle。