开发者社区> 问答> 正文

全文搜索引擎的比较-Lucene,Sphinx,Postgresql,MySQL?

我正在建立Django网站,并且正在寻找搜索引擎。

一些候选人:

Lucene / Lucene与指南针/ Solr

狮身人面像

PostgreSQL内置全文本搜索

MySQl内置全文本搜索

选择标准:

结果相关性和排名 搜索和索引速度 易于使用,易于与Django集成 资源需求-网站将托管在VPS上,因此理想情况下,搜索引擎不需要大量的RAM和CPU 可扩展性 其他功能,例如“您的意思是?”,相关搜索等 任何对以上搜索引擎或其他不在列表中的引擎有经验的人-我很想听听您的意见。

编辑:至于索引需求,随着用户不断向站点输入数据,这些数据将需要连续索引。它不一定是实时的,但是理想情况下新数据将以不超过15-30分钟的延迟显示在索引中

展开
收起
保持可爱mmm 2020-05-10 20:03:45 869 0
1 条回答
写回答
取消 提交回答
  • 很高兴看到有人对Lucene情有独钟-因为我对此一无所知。

    另一方面,狮身人面像我很了解,所以让我们看看我是否可以帮上忙。

    结果相关性排名是默认设置。您可以根据需要设置自己的排序方式,并为特定字段赋予更高的权重。 索引速度非常快,因为它直接与数据库对话。任何缓慢都会来自复杂的SQL查询和未索引的外键以及其他此类问题。我也从来没有发现搜索中有任何缓慢。 我是Rails,所以我不知道使用Django实施有多容易。Sphinx源代码附带了一个Python API。 搜索服务守护程序(searchd)的内存使用率非常低-您可以设置索引器进程也使用多少内存的限制。 可伸缩性是我的知识较粗略的地方-但将索引文件复制到多台计算机并运行多个searchd守护程序很容易。我从其他人那里得到的总体印象是,在高负载下它确实很棒,因此无需在多台计算机上进行扩展。 尽管“其他方法”可以很容易地用其他工具完成,但不支持“您是否想要”等。Sphinx确实通过使用字典来词干,因此,例如,“ driving”和“ drive”在搜索中将被视为相同。 但是,Sphinx不允许对字段数据进行部分索引更新。常用的方法是维护所有最近更改的增量索引,并在每次更改后重新索引(这些新结果在一两秒钟内出现)。由于数据量少,因此可能需要几秒钟的时间。不过,您仍然需要定期重新索引主要数据集(尽管定期性如何取决于数据的波动性-每天还是每小时?)。快速的索引速度使这一切都很轻松。 我不知道这对您的情况有多适用,但是Evan Weaver比较了一些常见的Rails搜索选项(Sphinx,Ferret(Ruby的Lucene移植版)和Solr),并运行了一些基准测试。我猜可能会有用。

    我还没有深入探讨MySQL全文搜索的深度,但是我知道它在速度方面和功能方面都无法与Sphinx,Lucene或Solr竞争。来源:stack overflow

    2020-05-10 20:04:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像