搜索引擎Lucene与数据库搜索比较

42

我正在使用MySQL数据库,并一直在使用基于数据库的搜索。使用数据库引擎和Lucene搜索引擎有什么优缺点?我想听听关于何时何地使用它们的建议。

4个回答

36

我建议你阅读全文搜索引擎与数据库管理系统的比较。一句话总结:如果你的主要用例是全文搜索,请使用Lucene。如果你的主要用例是连接和其他关系操作,请使用数据库。对于更复杂的用例,可以使用混合解决方案。


我在很多网站上看到了“搜索我们的网站”。如果我要搜索网站的内容,哪种方式会更好? - S L
1
搜索网站是全文检索。因此,Lucene更好。更好的选择是使用Solr:http://lucene.apache.org/solr/ - Yuval F
@YuvalF 如果数据库不是很大,网站的用户也不多,那么基于DBMS的全文查询是否足够呢?因为有时候如果那个人想要使用Lucene,他必须自己开发... - hugemeow
1
@hugemeow - 当然可以。对于小型用例,DBMS的全文搜索功能就足够了。如果你想使用Lucene,你可以使用Solr或ElasticSearch - 它们比裸露的Lucene更容易开始工作,并提供至少90%的Lucene功能。我也听说过Sphinx很不错,但我自己从未使用过。 - Yuval F
我已更新链接。另外,请查看我的 Quora 回答,关于相关主题,我已添加了 NoSql 选项:http://www.quora.com/ElasticSearch/Does-it-make-sense-to-use-Lucene-based-products-ElasticSearch-Solr-as-a-datastore - Yuval F

27
当您想要索引任意长度的文本文档并搜索其中的文本以返回匹配搜索查询的文件的排名列表时,请使用Lucene。经典示例是搜索引擎(如Google),其使用像Lucene这样的文本索引器来索引和查询网页内容。
与MySQL等数据库相比,使用Lucene进行文本索引和搜索的优点包括:
- 对于开发人员来说,提供分析、解析和索引多种语言中的文本信息(例如词干、复数形式、同义词、标记化)的工具。Lucene的文本搜索也具有良好的可扩展性。 - 对于用户来说,能够获得优质的搜索结果。Lucene使用非常好的相似度函数(用于将搜索查询与每个文档进行比较),其中心是余弦相似度和逆项/文档频率。这导致在前期几乎不需要进行大量调整的情况下,就可以获得良好的搜索结果。
这里有许多Lucene的有用信息

有比Lucene更优越的替代品吗?可以是开源或专有(付费或REST API)。 - Ravinder Payal
1
@RavinderPayal 大多数开源搜索引擎都是基于Lucene构建的,例如Solr和Elasticsearch。如果您不需要存储数十亿个文档,并且想要快速简单的解决方案,请查看Typesense等类似工具:https://github.com/typesense/typesense - jeffreyveon
@jeffreyveon,Type-Sense 看起来很合理,我会更深入地挖掘。 - Ravinder Payal

3

我们在工作中使用Sql Server来进行一些Fulltext搜索的查询。如果数据量很大,Sql会在FullText搜索返回的结果集和其他查询之间进行内部连接,这可能会很慢,特别是如果数据库运行在低功率机器上(20GB的数据需要2GB的内存)。将同样的查询转换为Lucene可以显著提高速度。


2

Lucene搜索具有索引的优势。 这篇文章可以帮助您了解Lucene。


我认为我们也可以在数据库表上添加索引。但是我不知道它是什么? - S L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接