专业的编程技术博客社区

网站首页 > 博客文章 正文

ParadeDB 基于 Postgres 的 ElasticSearch 替代方案

baijin 2024-09-05 11:34:22 博客文章 3 ℃ 0 评论

ParadeDB 是一款基于 PostgreSQL 构建的先进开源搜索引擎,旨在作为 ElasticSearch 的替代品。它充分利用了 Postgres 的强大功能,并将其扩展至提供媲美甚至超越 ElasticSearch 的搜索功能集:

1. 全文搜索:

ParadeDB 提供强大的全文搜索功能,允许用户使用灵活的分词器配置、支持17种语言的词干提取,并采用基于 SQL 的易于扩展的查询语言进行关键字或短语搜索。

2. 相似性搜索:

通过集成预装的 pgvector 扩展和智能工作流程, ParadeDB 实现了基于语义的相似性搜索,能够实时维护和同步向量表示,以实现高效的相似文档查找。

3. 混合搜索:

结合全文搜索和相似性搜索的优点,ParadeDB 实现了混合搜索策略,能够在提高搜索结果的准确性和召回率方面表现出色。

4. BM25 排序:

采用了 Elasticsearch 中广泛应用的 BM25 排序算法,确保全文搜索结果按照相关性得分进行排序,从而提供更为精确的搜索结果排名。

5. 分面搜索:

ParadeDB 支持分面搜索特性,允许用户获取搜索结果的不同维度统计信息,便于进行多维度筛选和导航。

6. 分布式搜索:

为应对大规模数据和高并发场景,ParadeDB 内置了自动索引分片功能,显著提升了搜索性能,相比单节点 PostgreSQL 实现了数百倍的搜索速度提升。

7. 底层技术:

ParadeDB 的搜索引擎核心基于 Tantivy 构建,这是一个基于 Rust 语言编写的、遵循 Apache Lucene 设计原则的高性能搜索引擎库,确保了系统的稳定性和效率。

总之,ParadeDB 结合了 PostgreSQL 的可靠性与 Tantivy 的高性能搜索能力,通过一系列高级搜索功能,为开发者提供了一款强大且具备弹性伸缩能力的开源搜索解决方案。

ParadeDB Docker 镜像

要快速启动并运行 ParadeDB 实例,只需拉取并运行最新的 Docker 映像:

docker run --name paradedb paradedb/paradedb

这将使用默认用户和密码启动 ParadeDB 实例。然后,您可以使用以下命令连接到数据库:postgrespostgrespsql

docker exec -it paradedb psql -U postgres

要在本地或本地安装 ParadeDB,我们建议使用我们的文件。或者,您可以将相应的环境变量传递给命令,将<>替换为所需的值:docker-compose.yml docker run

docker run \
  --name paradedb \
  -e POSTGRESQL_USERNAME=<user> \
  -e POSTGRESQL_PASSWORD=<password> \
  -e POSTGRESQL_DATABASE=<dbname> \
  -e POSTGRESQL_POSTGRES_PASSWORD=<superuser_password> \
  -v paradedb_data:/bitnami/postgresql \
  -p 5432:5432 \
  -d \
  paradedb/paradedb:latest

这将使用非 root 用户和密码启动 ParadeDB 实例。它将与超级用户相关联,并且是正确安装 ParadeDB 扩展所必需的。<user><password>superuser_passwordpostgres

该标志使 ParadeDB 数据能够在名为 的 Docker 卷中重新启动后保留。卷需要由具有 的用户写入,这是 Bitnami PostgreSQL Docker 映像的安全要求。您可以通过以下方式执行此操作:-vparadedb_datauid = 1001

sudo useradd -u 1001 <user>
sudo chown <user> </path/to/paradedb_data>

然后,您可以使用以下命令连接到数据库:psql

docker exec -it paradedb psql -U <user> -d <dbname> -p 5432 -W

ParadeDB 收集匿名遥测数据,以帮助我们了解有多少人在使用该项目。可以通过设置或取消设置变量来选择退出遥测。PARADEDB_TELEMETRY false

官方文档

https://docs.paradedb.com/introduction

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表