当前位置: 首页 > 软件库 > 程序开发 > 搜索引擎 >

Sonic

快速、轻量级、无模式的搜索后端
授权协议 MPL
开发语言 Rust
所属分类 程序开发、 搜索引擎
软件类型 开源软件
地区 不详
投 递 者 陆弘光
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Sonic 是一个快速、轻量级、无模式的搜索后端。Sonic 接收搜索文本和标识符元组,然后可以在一微秒的时间内对其进行查询。

Sonic 可以在某些场景下用来替代很重的诸如 ElasticSearch 等搜索后端。其功能包括自然语言搜索查询、自动完成搜索查询,以及提供最相关的查询结果。Sonic 使用标识符索引而不是文档索引,查询时返回的是 ID 可用来在外部数据库中匹配详细信息。

Sonic 的速度非常快,而且对系统资源的要求非常低,这里有一份性能测试报告:benchmarks.

 

Demo on Crisp Helpdesk search

  • sonic中大量的组件运行在docker容器中,用于隔离彼此的运行环境,从而解决相互之间的互斥问题。下面我们分析一下sonic中各个容器的构建过程。 Dockerfile文件的生成过程 sonic中的容器Dockerfile文件是通过jinjia2模板文件生成的,使用j2命令。 sonic在编译过程中首先会构建一个叫sonic-slave的容器,该容器用来做编译容器,后续所有的编译过程都是在该容器

  • 准备工作 一台安装Ubuntu18.04的系统,内存建议不少于16G,需要支持kvm虚拟化 安装ssh server sudo apt update -y sudo apt openssh-server -y 设置sudo免密 sudo visudo #最后一行加上自己的用户名 ljyfree ALL=(ALL:ALL) NOPASSWD: ALL #退出 安装必要的软件 sudo apt i

  • 介绍 sonic是最近很火的开源云真机平台,支持分布式部署,功能也非常丰富,我们需要一套环境远程执行自动化测试,于是,就部署了一套。当然,官方有项目详细的部署文档,本文结合我们自己的情况选择一台Linux主机上完成整个部署。 官网:https://sonic-cloud.gitee.io/#/Home github: https://github.com/SonicCloudOrg 准备工作 硬件

  • sonic-cpp 是由字节跳动 STE 团队和服务框架团队共同研发的一款面向 C++ 语言的高效 JSON 库,极致地利用当前 CPU 硬件特性与向量化编程,大幅提高了序列化反序列化性能,解析性能为 rapidjson 的 2.5 倍。 sonic-cpp 在字节内部上线以来, 已为抖音、今日头条等核心业务,累计节省了数十万 CPU 核心。近日,我们正式对外开源 sonic-cpp,希望能够帮助

 相关资料
  • 问题内容: 我有一个将要推送的特定格式的XML文档。该文档将始终是同一类型,因此非常严格。 我需要对此进行解析,以便将其转换为JSON(嗯,这是一个混蛋版本,以便其他人可以将其与DOJO一起使用)。 我的问题是,我应该使用非常快速的轻量级(不需要SAX等)XML解析器(有什么想法吗?)还是编写我自己的,基本上可以转换为StringBuffer并在数组中旋转?基本上,我假设所有HTML解析器都将旋转

  • 如何在android Studio中快速搜索一个类文件或整个资源文件?

  • 应用内搜索 当应用内包含大量信息的时候,用户希望能够通过搜索快速地定位到特定内容。 最基本的搜索包括以下过程: 打开一个搜索文本框 输入查询并提交 显示搜索结果集 然而,可以通过加入一些增强功能来显著提升搜索体验: 启用语音搜索 提供基于用户最近历史查询的搜索建议,即使是在输入查询之前 提供满足应用数据中实际结果的自动完成搜索建议 应用内搜索中有两种主要的模式:持久性搜索(persistent s

  • 本文向大家介绍vim 搜索模式,包括了vim 搜索模式的使用技巧和注意事项,需要的朋友参考一下 示例 在搜索文件时,Vim支持使用正则表达式。 表示您希望执行搜索的字符是/。 您可以执行的最简单的搜索如下 这将在整个文件中搜索的所有实例if。但是,我们的搜索if实际上是一个正则表达式,它将匹配单词的任何出现(if包括其他单词内部的匹配)。 举例来说,我们的搜索会说所有的下列单词匹配我们的搜索:if

  • 我有一个包含100,000个集合的数组。每个集合包含1,000,000以下的自然数。我必须找到有序对的数量{m,n},其中0 例如,我有两个集合set1={1,2,4}set2={1,3}。5以下所有可能的有序数对是{1,2}、{1,3}、{1,4}、{2,3}、{2,4}和{3,4}。集合1中不同时存在的低于5的数的有序对是{1,3}、{2,3}和{3,4}。集合2中5以下缺失的有序对是{1,2

  • 问题内容: 在我的Rails应用程序中,我具有允许查找与当前登录用户最接近的用户的功能。我为此使用了Geocoder gem。在用户模型中,我具有如下范围: 这非常有效,但是对于大量用户而言却很慢。当我调用此作用域时,它将生成以下sql查询: 我正在尝试为此创建索引,但它们不起作用。我正在尝试以下组合: 我应该如何添加索引以加快此查询的速度? 编辑:我忘记添加我的纬度和经度列是小数。 此查询的AN

  • 我正在通过Kochan的C语言编程学习C语言,其中一个练习是: 使函数搜索数字0xE1F4(=1110 0001 1111 0100二进制)是否出现三位模式0x5(=101二进制)。该函数返回,以指示在中找到了以11位开头的模式。 确保函数没有对的大小做任何假设。 这是我实现函数的方式: 但是,我的程序的输出结果是14,而不是11。我用铅笔和纸跟着程序走,不明白哪里出了问题...帮忙?

  • 问题内容: 我有一个SQL Server2005数据库,其中的表包含4000万条记录。每个记录包含一列,该列存储用逗号分隔的关键字列表。每个关键字都是字母和数字的组合。关键字最长为7个字符,平均每条记录有15个关键字。关键字在各行之间不是唯一的。 我想搜索全部或部分关键字。 我创建了全文索引,其中显示了328,245,708个唯一键数。搜索效率对于4个或更多字符的查询(在测试机上大约 100毫秒