第231002期 – 开源搜索引擎

第231002期 - 开源搜索引擎
快如闪电!!15.1k star,推荐一款开源的搜索引擎,快速、容错、支持模糊搜索

这款索索引擎演示如下,支持自动纠错,更多实用工具推荐到文末获取:

第231002期 - 开源搜索引擎

Typesense: 构建卓越搜索体验的引擎

在数字化时代,一个高效、准确且愉悦的搜索引擎对用户体验至关重要。Typesense是一个开源搜索引擎,它致力于提供快速、容错和内存模糊搜索功能,为用户构建愉悦的搜索体验。相较于Algolia和ElasticSearch,Typesense是一个更为易用的替代方案。

快速入门

无论你是开发者、数据科学家还是企业家,Typesense都提供了简单易懂的入门体验。这款搜索引擎具有一系列引人注目的特性,使得它成为搜索领域的瑰宝。

第231002期 - 开源搜索引擎

特色功能

  1. 容错处理: Typesense能够优雅地处理打字错误,提供出色的容错处理,确保用户输入错误时也能找到相关结果。

  2. 简单愉悦: Typesense易于设置、集成、操作和扩展,用户可以快速上手,即使是对搜索引擎不太了解的初学者也能迅速掌握。

  3. 极速搜索: Typesense由C++构建,从底层精心构建,实现低延迟(<50毫秒)的即时搜索,确保用户能够快速获取结果。

  4. 可调排名: 用户可以轻松地调整搜索结果,使其完美符合用户的需求。

  5. 排序: 在查询时,可以根据特定字段动态排序结果,例如“按价格升序排列”。

  6. 分面和过滤: 可以深入了解并细化搜索结果,方便用户快速找到需要的信息。

  7. 分组和去重: 将相似的结果分组显示,提供更多多样性。

  8. 联合搜索: 可以在单个HTTP请求中跨多个集合(索引)中进行搜索。

  9. 地理搜索: 可以根据纬度/经度或在一个边界框内进行搜索和排序。

  10. 向量搜索: 可以将来自机器学习模型的嵌入索引到Typesense中,进行最近邻搜索。这可用于构建相似性搜索、语义搜索、视觉搜索、推荐等功能。

  11. 语义/混合搜索: 可以使用内置模型(如S-BERT、E-5等)或使用OpenAI、PaLM API等,自动生成Typesense内的嵌入,用于查询和索引数据。这允许您将JSON数据发送到Typesense,构建出色的语义搜索和关键字搜索体验。

  12. 作用域API密钥: 可以生成仅允许访问特定记录的API密钥,适用于多租户应用。

  13. 同义词: 定义单词的等效词,因此搜索一个词将返回定义的同义词的结果。

  14. 策展和推销: 可以将特定记录提升到搜索结果的固定位置,进行特别展示。

  15. 基于Raft的集群: 可以设置高度可用的分布式集群。

  16. 无缝版本升级: 当新版本的Typesense发布时,只需替换二进制文件并重新启动Typesense即可完成升级。

  17. 无运行时依赖: Typesense是一个单一的二进制文件,您可以使用单一命令在本地或生产环境中运行它。

如果以上功能列表中没有你需要的功能,请查看我们的问题跟踪器,看看是否有人已经提出了此功能请求,并在其中添加一条评论解释你

的用例。如果没有,请新建一个问题。我们根据用户反馈来确定路线图的优先级,因此我们期待听到您的声音。

路线图

Typesense的公共路线图可在此处找到。

第一列还解释了我们如何根据用户反馈、您如何影响优先级以及我们的发布节奏来设置功能的优先级。

基准测试

  1. 包含220万个食谱(食谱名称和配料)的数据集:

    • 在Typesense中索引时占用约900MB的RAM。
    • 索引所有220万条记录耗时3.6分钟。
    • 在4vCPU服务器上,Typesense能够处理每秒104个并发搜索查询,平均搜索处理时间为11毫秒。
  2. 包含2800万本书(书名、作者和分类)的数据集:

    • 在Typesense中索引时占用约14GB的RAM。
    • 索引所有2800万条记录耗时78分钟。
    • 在4vCPU服务器上,Typesense能够处理每秒46个并发搜索查询,平均搜索处理时间为28毫秒。
  3. 包含300万个产品(亚马逊产品数据)的数据集:

    • 在8-vCPU 3节点高可用Typesense集群上,Typesense能够处理每秒250个并发搜索查询。

我们希望能够使用更大的数据集进行基准测试。如果您知道公共领域中的大型结构化数据集,请告诉我们。如果您有关于自己大型数据集的基准测试结果,也请告诉我们。请通过开启一个问题告诉我们!

用户

Typesense被许多领域和行业的用户使用。在Typesense Cloud上,我们每月为用户提供超过15亿次搜索服务。Typesense的Docker镜像已被下载超过700万次。

我们最近开始在我们的Showcase中记录谁在使用它。如果您希望被列入其中,请随时编辑SHOWCASE.md并发送给我们一个PR。

您还可以在Typesense Cloud首页上看到一组用户logo。

安装

有三种安装Typesense的方式:

选项1: 你可以下载我们为Linux(x86_64和arm64)和Mac(x86_64)发布的二进制包。

选项2: 你也可以从我们的官方Docker镜像运行Typesense。

选项3: 在Typesense Cloud上部署托管集群。

快速入门

以下是一个简单的示例,展示了如何在Typesense上创建集合、索引文档并进行搜索。

首先,通过Docker启动Typesense服务器:

docker run -p 8108:8108 -v/tmp/data:/data typesense/typesense:0.25.1 --data-dir /data --api-key=Hu52dwsas2AdxdE

接着,安装Python客户端:

pip install typesense

现在,初始化客户端并创建一个名为companies的集合:

import typesense

client = typesense.Client({
  'api_key': 'Hu52dwsas2AdxdE',
  'nodes': [{
    'host': 'localhost',
    'port': '8108',
    'protocol': 'http'
  }],
  'connection_timeout_seconds': 2
})

create_response = client.collections.create({
  "name": "companies",
  "fields": [
    {"name": "company_name", "type": "string" },
    {"name": "num_employees", "type": "int32" },
    {"name": "country", "type": "string", "facet": True }
  ],
  "default_sorting_field": "num_employees"
})

接下来,向刚刚创建的集合添加一个文档:

document = {
 "id": "124",
 "company_name": "Stark Industries",
 "num_employees": 5215,
 "country": "USA"
}

client.collections['companies'].documents.create(document)

最后,搜索我们刚刚索引的

文档:

search_parameters = {
  'q'         : 'stork',
  'query_by'  : 'company_name',
  'filter_by' : 'num_employees:>100',
  'sort_by'   : 'num_employees:desc'
}

client.collections['companies'].documents.search(search_parameters)

你是否注意到了查询文本中的拼写错误?没关系,Typesense可以轻松处理打字错误!

结语

无论是构建电商网站、移动应用程序还是大规模企业系统,Typesense都能够为你提供快速、准确和愉悦的搜索体验。其强大的功能、易用性和高性能,使其成为当前搜索引擎领域的佼佼者。

通过Typesense,你可以确保用户能够迅速、方便地找到他们需要的信息,从而提升用户满意度,推动业务增长。让我们携手迈向一个更加智能、高效的搜索时代!


© 版权声明

相关文章