搜索引擎 Lucene 与数据库搜索
Posted
技术标签:
【中文标题】搜索引擎 Lucene 与数据库搜索【英文标题】:Search engine Lucene vs Database search 【发布时间】:2011-06-06 00:53:50 【问题描述】:我正在使用 mysql 数据库,并且一直在使用数据库驱动的搜索。数据库引擎和Lucene搜索引擎有什么优缺点?我想就何时何地使用它们提出建议?
【问题讨论】:
【参考方案1】:我建议你阅读Full Text Search Engines vs. DBMS。单线是:如果您的大部分用例是全文搜索,请使用 Lucene。如果您的大部分用例是连接和其他关系操作,请使用数据库。对于更复杂的用例,您可以使用混合解决方案。
【讨论】:
我在很多网站上都看到过“搜索我们的网站”。如果我要搜索网站的内容,那哪个更好? 搜索网站是全文搜索。因此,Lucene 更好。更好的是,使用 Solr:lucene.apache.org/solr @YuvalF 如果数据库不大并且该站点的用户不多,那么基于 DBMS 的全文查询是否足够?因为有时候那家伙想用lucene,就得自己开发…… @hugemeow - 当然。 DBMS 的全文搜索适用于小型用例。如果你想使用 Lucene,你可以使用 Solr 或 ElasticSearch——它们都比裸露的 Lucene 更容易开始使用,并且提供了 Lucene 至少 90% 的功能。我也听说过关于 Sphinx 的好消息,虽然我自己从未使用过。 我已经更新了链接。另请参阅我关于相关主题的 Quora 回答,我在其中添加了 NoSql 选项:quora.com/ElasticSearch/…【参考方案2】:我们在工作中使用 Sql Server 进行一些使用全文搜索的查询。在大量数据的情况下,Sql 在全文搜索返回的结果集和查询的其余部分之间进行内部连接,如果数据库在低功率机器上运行(2GB 内存用于 20 GB 数据),这可能会很慢。将相同的查询切换到 Lucene 大大提高了速度。
【讨论】:
【参考方案3】:当您想要索引文本 文档(任意长度)并在这些文档中搜索 Text 时使用 Lucene,返回与搜索查询匹配的文档排序列表. 典型的例子是像谷歌这样的搜索引擎,它使用像 Lucene 这样的文本索引器来索引和查询网页的内容。
相对于 Mysql 等数据库,使用 Lucene 来索引和搜索文本的优点是:
供开发人员使用 - 用于分析、解析和索引多种语言的文本信息(例如词干、复数、同义词、标记化)的工具。 Lucene 也非常适合文本搜索。 为用户 - 高质量的搜索结果。 Lucene 使用了一个非常好的similarity function(将搜索查询与每个文档进行比较),其核心是余弦相似度和逆词/文档频率。这样一来,只需很少的前期调整即可获得良好的搜索结果。很多useful info on Lucene here。
【讨论】:
有没有比 Lucene 更有利的替代品。开源或所有者(付费或 REST API) @RavinderPayal 大多数开源搜索引擎都建立在 Lucene 之上——例如Solr 和 Elasticsearch。如果您不需要存储数十亿个文档并且想要快速简单的东西,请查看 Typesense 之类的东西:github.com/typesense/typesense @jeffreyveon type-sense 似乎是合理的,会更深入地挖掘【参考方案4】:Lucene 搜索具有索引的优势。 This帖子可以帮助你了解lucene。
【讨论】:
我认为我们也可以在数据库表上添加索引。但我不知道它是什么?以上是关于搜索引擎 Lucene 与数据库搜索的主要内容,如果未能解决你的问题,请参考以下文章
论文参考基于Ajax+Lucene构建搜索引擎的设计与实现(源代码+论文)免费下载
毕业论文“基于Ajax+Lucene构建搜索引擎的设计与实现”中如何写好摘要