Typesense:开源的高速搜索引擎

在当今数据驱动的世界中,高效、快速且智能的搜索能力是任何应用程序和网站成功的关键因素之一。无论是电商平台、内容管理系统还是社交媒体,用户都希望能够迅速找到所需信息。Typesense,作为一款优秀的开源搜索引擎,旨在通过其卓越的性能和简便易用的特性,为开发者和企业提供强大的搜索解决方案。本文将深入探讨 Typesense 的主要特点及其在实际应用中的一些示例。

主要特点

1. 拼写错误容忍度:开箱即用,优雅地处理拼写错误

在搜索过程中,用户的输入往往可能出现拼写错误。Typesense 具有高容错性,它能够自动处理拼写错误并返回最相关的结果,提高了用户体验。这意味着即使用户输入的关键词不完全正确,Typesense 也能智能判断并提供建议。

2. 简单而令人愉快

Typesense 的安装和集成过程非常简单。它只需几步即可配置完成,开发者几乎不需要费力学习复杂的 API。无论是在本地开发环境还是云端部署,Typesense 都能轻松上手。

3. 速度超快

Typesense 使用 C++ 编写,从根本上优化了搜索引擎的性能。它能够做到低延迟(响应时间小于 50ms)的即时搜索,这对于实时应用至关重要。

4. 可调排名

关于搜索结果的排名,Typesense 允许开发者根据自己的需求自定义结果的排序方式。这意味着开发者可以轻松实现功能,例如“按价格排序(升序)”,以便为用户提供个性化的搜索体验。

5. 分面和过滤

Typesense 支持以分面和过滤的方式深入挖掘搜索结果。用户可以根据不同的属性(如价格、分类等)快速筛选出相关内容,提升了搜索的有效性。

6. 联合搜索

在需要在多个数据集合中进行搜索时,Typesense 的联合搜索功能能够让开发者在一个 HTTP 请求中跨多个集合(索引)进行高效搜索。这使得在复杂应用中仍能保持良好的性能。

7. 地理搜索

Typesense 支持根据用户的地理位置(纬度和经度)返回结果。这一功能非常适合需要基于位置服务的应用。

8. 向量搜索

Typesense 还支持向量搜索,可将机器学习模型生成的嵌入索引并进行最近邻搜索。这对于实现相似性搜索、语义搜索等应用场景如推荐系统至关重要。

9. 语义/混合搜索

Typesense 提供内置模型(如 S-BERT、E-5)生成嵌入,支持使用 OpenAI、PaLM API 等进行查询和索引数据,构建更深层次的语义搜索体验。

10. 同义词管理

Typesense 允许开发者定义同义词,以便用户在搜索某个词时也能检索到其同义词的结果,进一步提升了搜索的灵活性。

11. 基于Raft的集群

Typesense 基于 Raft 协议支持高可用性的分布式集群,确保数据的一致性和可用性。

12. 分面和过滤:

深入挖掘并细化结果。

13 分组和区分:

将相似的结果分组在一起以显示更多变化。

对话式搜索(内置 RAG):

根据您在 Typesense 中索引的数据,将问题发送到 Typesense,并让响应成为完整的句子。想想 ChatGPT,但基于您自己的数据。

图像搜索:

使用 CLIP 模型,通过图像内容的文本描述来搜索图像,或者执行相似性搜索。

语音搜索:

通过语音记录捕获并发送查询 - Typesense 将转录(通过 Whisper 模型)并提供搜索结果。

范围 API 密钥:

为多租户应用程序生成仅允许访问某些记录的 API 密钥。

JOIN:

通过公共引用字段连接一个或多个集合,并在查询时将它们连接起来。这允许您优雅地对类似 SQL 的关系进行建模。

实践案例

为了更好地理解 Typesense 的功能,以下是如何在一个简单的电商应用中使用 Typesense 的具体示例。

1. 安装和配置

首先,安装 Typesense,可以使用 Docker 快速启动:

docker run -d -p 8108:8108 \-v typesense-data:/data \typesense/typesense:latest \--data-dir /data \--api-key=xyz

2. 创建索引

对于一个电商应用,我们可以创建一个产品索引,包含产品的基本信息,如名称、描述和价格:

curl -X POST "http://localhost:8108/indexes" \
-H "X-TYPESENSE-API-KEY: xyz" \
-H "Content-Type: application/json" \
-d '{"name": "products","fields": [{"name": "id", "type": "int32"},{"name": "name", "type": "string"},{"name": "description", "type": "string"},{"name": "price", "type": "float"}]}'

3. 添加文档

将产品信息添加到索引中:

curl -X POST "http://localhost:8108/indexes/products/documents/import" \
-H "X-TYPESENSE-API-KEY: xyz" \
-H "Content-Type: application/json" \
-d '[{"id": 1, "name": "Apple iPhone 14", "description": "最新款的苹果手机", "price": 999.00},{"id": 2, "name": "Samsung Galaxy S21", "description": "高性能的安卓手机", "price": 799.00},{"id": 3, "name": "Google Pixel 6", "description": "出色的摄影手机", "price": 599.00}]'

4. 搜索产品

用户可以通过关键词搜索产品。如果用户输入“iPhone”或者拼写错误的“ipone”,Typesense 都会优雅地处理并返回相关结果:

curl -X GET "http://localhost:8108/indexes/products/documents/search" \
-H "X-TYPESENSE-API-KEY: xyz" \
-H "Content-Type: application/json" \
-d '{"q": "ipone","query_by": "name,description","sort_by": "price:asc"}'

5. 分面和过滤

假如电商应用希望根据价格区间过滤产品,Typesense提供很好的支持:

curl -X GET "http://localhost:8108/indexes/products/documents/search" \
-H "X-TYPESENSE-API-KEY: xyz" \
-H "Content-Type: application/json" \
-d '{"q": "*","query_by": "name,description","facet_by": "price","filter_by": "price: [500..1000]"}'

Typesense 的应用场景

网站搜索

Typesense 最常见的应用场景之一是网站搜索。许多企业希望用户能够快速找到他们所需的信息,从而提高用户体验和转化率。例如,一个电子商务网站可以利用 Typesense 来实现快速的产品搜索。

数据库搜索

对于数据量庞大的应用,Typesense 也可以用作数据库搜索工具。其高速检索能力能够帮助用户在复杂信息中迅速找到相关内容。

文档搜索

Typesense 可以帮助用户实现大规模文档的搜索功能。无论是技术文档、知识库还是用户手册,Typesense 都能提供高效的检索体验。

结语

Typesense 是一款强大且灵活的搜索引擎,适合面向多种应用场景的企业。无论是支持中文搜索、拼写错误容忍,还是向量搜索和地理搜索,其功能都在不断地扩展与优化。通过上述示例,相信读者已经对如何在实际项目中使用 Typesense 形成了更加清晰的认识。如果你正在寻找一个简单、快速且功能丰富的搜索解决方案,Typesense 无疑是一个值得考虑的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/64919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化测试框架playwright 常见问题和解决方案

自动化课程已经讲完了playwright框架,很多同学跃跃欲试,所谓实践出真知,这不在实践中就要到了一些问题,小编也给大家整理出来了,送个有需要的同学,记得点赞收藏哦~~ 01安装问题 问题描述: 在安…

Windows10 下通过 Visual Studio2022 编译 openssl 3.4 + POCO 1.14.1

Windows10 下通过 Visual Studio2022 编译 POCO库 1 POCO库简介2 环境准备2.1 VS Studio 2022 安装2.2 openssl 安装3 编译 POCO 1.14.13.1 下载源码3.2 修改编译配置3.2.1 修改 poco\Crypto 工程 引用 openssl 的配置3.2.2 修改 poco\NetSSL_OpenSSL 工程 引用 openssl 的配置…

微软的AI转型故事

在一次备受瞩目的深度访谈中,微软的CEO萨提亚纳德拉与著名投资人比尔格里和布拉德格斯特纳展开了一场关于微软十年转型与AI未来的深入探讨。这次对话不仅回顾了微软在纳德拉领导下的重大发展轨迹,也为AI时代的战略布局提供了洞见。 纳德拉的职业起点 故…

Vue.js前端框架教程11:Vue监听器watch和watchEffect

文章目录 监听器(watchers)基本用法deep: trueimmediate: true总结watchEffect基本用法自动追踪依赖停止监听与 `watch` 的对比性能优化总结监听器(watchers) 在 Vue 中,监听器(watchers)是一种观察和响应 Vue 实例上的数据变动的机制。Vue 提供了 watch 属性,允许我们…

厉害了多模态对齐!新思路直接发高区!小红书、国科大都在抢着发!

多模态是个非常热门的话题,这其中,“多模态对齐”已经被验证非常重要,它能够提升AI模型的跨模态理解和情感分析精度,是未来多模态大模型商业化的必要条件,研究热度不言而喻。 就说最近的大佬团队,小红书前…

ubuntu20.04安装imwheel实现鼠标滚轮调速

ubuntu20.04安装imwheel实现鼠标滚轮调速 Ubuntu 系统自带的设置中仅具备调节鼠标速度的功能,而无调节鼠标滚轮速度的功能。其默认的鼠标滚轮速度较为缓慢,在查看文档时影响尚可接受,但在快速浏览网页时,滚轮速度过慢会给用户带来…

基于深度学习的图像超分辨率重建

基于深度学习的图像超分辨率重建技术是一种先进的图像处理技术,它能够从低分辨率的图像中重建出高分辨率的图像。以下是对该技术的详细介绍: 一、技术背景图像超分辨率(Image Super Resolution)重建是指从观测到的低分辨率图像重…

MacOS安装MySQL

官网下载MySQL 苹果芯片选择ARM版本 安装过程中会要求你输入root的密码(不少于8位),这里设置为12345678 打开系统设置查看是否成功安装MySQL 配置MySQL环境变量 vi ~/.zshrc加入一行export PATH$PATH:/usr/local/mysql/bin 执行source ~/…

dolphinscheduler服务注册中心源码解析(三)RPC提供者服务整合注册中心注册服务实现源码

RPC提供者服务整合注册中心注册服务实现源码 1.概述2.源码解读思路3.实现2.1.应用服务的RPC服务接口定义2.1.1.MasterServer应用中提供的RPC接口服务2.1.2.WorkerServer应用中提供的RPC接口服务2.2.应用服务的RPC服务接口实现2.2.1.MasterServer应用中提供的RPC接口服务实现类2…

Sass变量的妙用:提升CSS开发效率与可维护性

Sass变量的妙用:提升CSS开发效率与可维护性 Sass变量的妙用:提升CSS开发效率与可维护性一、Sass变量的基础二、Sass变量的妙用三、提升开发效率与可维护性四、结论 Sass变量的妙用:提升CSS开发效率与可维护性 在前端开发的世界里&#xff0c…

Leetcode Hot 100 【二叉树】104. 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3…

【漏洞复现】F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 一、漏洞概述 1.1漏洞简介 漏洞名称:F5 BIG-IP Next Central Manager SQL注入漏洞漏洞编号:CVE-2024-26026漏洞威胁等级:超危影响范围:BIG-IP Next Central Manage…

Debian系统宝塔面板安装LiteSpeed Memcached(LSMCD)

参考链接 1. 官网指引: https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:lsmcd:installation 2. 安装OpenLiteSpeed官方LSMCD对象缓存替换Memcached详细图文教程 - 搬主题 实操记录: 首先LSMCD 默认的端口是11211,…

WebDAV文件共享:将个人电脑变身为云存储,实现自由文件传输

WebDAV文件共享:将个人电脑变身为云存储,实现自由文件传输 引言:操作步骤搭建安装Internet Information Services (IIS) 管理器配置Internet Information Services (IIS) 管理器配置远程域名访问地址 引言: 相信很多朋友都有过把…

MySQL的分析查询语句

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…

前端开发 之 12个鼠标交互特效上【附完整源码】

前端开发 之 12个鼠标交互特效上【附完整源码】 文章目录 前端开发 之 12个鼠标交互特效上【附完整源码】一:彩色空心爱心滑动特效1.效果展示2.HTML完整代码 二:彩色实心爱心滑动特效1.效果展示2.HTML完整代码 三:粒子连结特效1.效果展示2.HT…

VSCode如何修改默认扩展路径和用户文件夹目录到D盘

在使用Visual Studio Code(VSCode)时,随着安装的扩展和用户数据的增多,C盘的空间可能会逐渐紧张。为了优化存储管理,将VSCode的默认扩展路径和用户文件夹目录迁移到D盘是一个有效的解决方案。以下是详细的操作步骤&…

Spring Cloud OpenFeign快速入门demo

一、应用场景 Spring Cloud OpenFeign 是一个声明式的 HTTP 客户端,旨在简化微服务之间的通信。它使得开发者能够通过简单的接口定义和注解来调用 RESTful API,极大地减少了样板代码。以下是一些典型的应用场景: 微服务间调用:在…

深度学习之超分辨率算法——SRGAN

更新版本 实现了生成对抗网络在超分辨率上的使用 更新了损失函数,增加先验函数 SRresnet实现 import torch import torchvision from torch import nnclass ConvBlock(nn.Module):def __init__(self, kernel_size3, stride1, n_inchannels64):super(ConvBlock…

未来将要被淘汰的编程语言

COBOL - 这是一种非常古老的语言,主要用于大型企业系统和政府机构。随着老一代IT工作人员的退休,COBOL程序员变得越来越少。Fortran - 最初用于科学和工程计算,Fortran在特定领域仍然有其应用,但随着更现代的语言(如Py…