快如闪电!!15.1k star,推荐一款开源的搜索引擎,快速、容错、支持模糊搜索
这款索索引擎演示如下,支持自动纠错,更多实用工具推荐到文末获取:
Typesense: 构建卓越搜索体验的引擎
在数字化时代,一个高效、准确且愉悦的搜索引擎对用户体验至关重要。Typesense是一个开源搜索引擎,它致力于提供快速、容错和内存模糊搜索功能,为用户构建愉悦的搜索体验。相较于Algolia和ElasticSearch,Typesense是一个更为易用的替代方案。
快速入门
无论你是开发者、数据科学家还是企业家,Typesense都提供了简单易懂的入门体验。这款搜索引擎具有一系列引人注目的特性,使得它成为搜索领域的瑰宝。
特色功能
容错处理: Typesense能够优雅地处理打字错误,提供出色的容错处理,确保用户输入错误时也能找到相关结果。
简单愉悦: Typesense易于设置、集成、操作和扩展,用户可以快速上手,即使是对搜索引擎不太了解的初学者也能迅速掌握。
极速搜索: Typesense由C++构建,从底层精心构建,实现低延迟(<50毫秒)的即时搜索,确保用户能够快速获取结果。
可调排名: 用户可以轻松地调整搜索结果,使其完美符合用户的需求。
排序: 在查询时,可以根据特定字段动态排序结果,例如“按价格升序排列”。
分面和过滤: 可以深入了解并细化搜索结果,方便用户快速找到需要的信息。
分组和去重: 将相似的结果分组显示,提供更多多样性。
联合搜索: 可以在单个HTTP请求中跨多个集合(索引)中进行搜索。
地理搜索: 可以根据纬度/经度或在一个边界框内进行搜索和排序。
向量搜索: 可以将来自机器学习模型的嵌入索引到Typesense中,进行最近邻搜索。这可用于构建相似性搜索、语义搜索、视觉搜索、推荐等功能。
语义/混合搜索: 可以使用内置模型(如S-BERT、E-5等)或使用OpenAI、PaLM API等,自动生成Typesense内的嵌入,用于查询和索引数据。这允许您将JSON数据发送到Typesense,构建出色的语义搜索和关键字搜索体验。
作用域API密钥: 可以生成仅允许访问特定记录的API密钥,适用于多租户应用。
同义词: 定义单词的等效词,因此搜索一个词将返回定义的同义词的结果。
策展和推销: 可以将特定记录提升到搜索结果的固定位置,进行特别展示。
基于Raft的集群: 可以设置高度可用的分布式集群。
无缝版本升级: 当新版本的Typesense发布时,只需替换二进制文件并重新启动Typesense即可完成升级。
无运行时依赖: Typesense是一个单一的二进制文件,您可以使用单一命令在本地或生产环境中运行它。
如果以上功能列表中没有你需要的功能,请查看我们的问题跟踪器,看看是否有人已经提出了此功能请求,并在其中添加一条评论解释你
的用例。如果没有,请新建一个问题。我们根据用户反馈来确定路线图的优先级,因此我们期待听到您的声音。
路线图
Typesense的公共路线图可在此处找到。
第一列还解释了我们如何根据用户反馈、您如何影响优先级以及我们的发布节奏来设置功能的优先级。
基准测试
包含220万个食谱(食谱名称和配料)的数据集:
- 在Typesense中索引时占用约900MB的RAM。
- 索引所有220万条记录耗时3.6分钟。
- 在4vCPU服务器上,Typesense能够处理每秒104个并发搜索查询,平均搜索处理时间为11毫秒。
包含2800万本书(书名、作者和分类)的数据集:
- 在Typesense中索引时占用约14GB的RAM。
- 索引所有2800万条记录耗时78分钟。
- 在4vCPU服务器上,Typesense能够处理每秒46个并发搜索查询,平均搜索处理时间为28毫秒。
包含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,你可以确保用户能够迅速、方便地找到他们需要的信息,从而提升用户满意度,推动业务增长。让我们携手迈向一个更加智能、高效的搜索时代!