【问题标题】:Search engine Lucene vs Database search搜索引擎 Lucene 与数据库搜索
【发布时间】:2011-06-06 00:53:50
【问题描述】:

我正在使用 MySQL 数据库,并且一直在使用数据库驱动的搜索。数据库引擎和Lucene搜索引擎有什么优缺点?我想就何时何地使用它们提出建议?

【问题讨论】:

    标签: mysql lucene search-engine


    【解决方案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。

      【讨论】:

      • 我认为我们也可以在数据库表上添加索引。但我不知道它是什么?
      猜你喜欢
      • 2010-09-22
      • 2017-07-23
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 2014-04-14
      相关资源
      最近更新 更多