我正在编写用户创建内容的Web应用程序(论坛上的帖子)。使用选择..比如..还是Lucene更好? Lucene在非高级搜索方面有什么优势。
答案 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。相反,您应该尝试使用Solr或Elastic Search等独立产品或Hibernate Search等库。不幸的是,我个人最喜欢的Compass现在已被抛弃。我刚刚尝试过Hibernate Search并将其放弃以支持Compass。现在,看起来Elastic Search可能是提供高级搜索功能的最简单方法。
此外,一些RDBMS支持或多或少的高级全文搜索功能,例如MySQL,MS SQL和Oracle。