首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS微信全文搜索技术优化

这些搜索功能从2014年上线至今,已经多年没有更新底层搜索技术,聊天记录使用的全文搜索引擎还是SQLite FTS3,而现在已经有SQLite FTS5,收藏首页的搜索还是使用简单的Like语句去匹配文本...SQLiteFTS5组件作为最新版本引擎也已经推出超过六年了,在安卓微信上也已经全量应用,所以技术风险是最低的。...在SQLite几个版本的引擎中,FTS5的搜索语法更加完备严谨,提供了很多接口给用户自定义搜索函数,所以搜索能力也相对强一点。...SQLite FTS3和FTS5的大部分性能很接近,FTS5索引的生成耗时比FTS3高一截,这个有优化方法。 综合考虑这些因素,我们选择SQLite FTS5作为iOS微信全文搜索的搜索引擎。...为了减少segment的数量,SQLite FTS5引入了merge机制。

2.4K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQLite全文搜索引擎:实现原理、应用实践和版本差异

    FTS在SQLite中作为一个虚拟表(Virtual Table)模块实现,支持多种版本,如FTS3、FTS4和FTS5。...三、FTS3、FTS4和FTS5的区别 FTS3、FTS4和FTS5都是SQLite的全文搜索(Full-Text Search)引擎,用于实现高效的全文搜索功能。...3.3 FTS5 FTS5SQLite的最新全文搜索引擎,相较于FTS4,它引入了更多的改进和新功能。主要区别包括: 更高的查询性能,尤其是在处理大型文档集合时。...3.4 小结 总之,FTS3、FTS4和FTS5SQLite全文搜索引擎的不同版本,它们之间的主要区别在于功能和性能方面的改进。...四、更新SQLite的FTS版本的步骤 要更新SQLite的FTS版本,需要遵循以下步骤。以下示例说明了如何从FTS4升级到FTS5,但这些步骤也适用于从FTS3升级到FTS4或FTS5

    38410

    移动客户端多音字搜索

    本文重点讲述微信安卓客户端在SQLite FTS5的基础上,多音字问题的解决方案。...客户端索引方案 ---- 在确定字表方案后,需要在客户端本地使用SQLite FTS5建立索引。因为拼音搜索主要是采用前缀搜索的方式,所以建立索引的内容以及方式需要考虑FTS5前缀搜索的过程 ?...而SQLite FTS5正是通过搜索一个词语来找到对应的DocId,通过TermOffset来定位该词语在Document中的位置。...在SQLite FTS5中,一个词语可以通过一个DocId和一个TermOffset来定位,所以当两个词语拥有同一个DocId和TermOffset时,就可以说这两个词语为同义词了,也就有了如下的索引方案...多音字分词器 ---- SQLite FTS5默认的分词器的分隔符都是固定的,所以,在识别拼音字符时,会当成英文字母来分词。

    3.6K210

    微信团队分享:微信移动端的全文检索多音字问题解决方案

    本文重点讲述微信安卓客户端在SQLite FTS5的基础上,多音字问题的解决方案。...6、客户端索引方案 在确定字表方案后,需要在客户端本地使用SQLite FTS5建立索引。因为拼音搜索主要是采用前缀搜索的方式,所以建立索引的内容以及方式需要考虑FTS5前缀搜索的过程。 ?...而SQLite FTS5正是通过搜索一个词语来找到对应的DocId,通过TermOffset来定位该词语在Document中的位置。 方案优点: 实现较为简单; 可覆盖所有多音字情况。...在SQLite FTS5中,一个词语可以通过一个DocId和一个TermOffset来定位,所以当两个词语拥有同一个DocId和TermOffset时,就可以说这两个词语为同义词了,也就有了如下的索引方案...7、多音字分词器 SQLite FTS5默认的分词器的分隔符都是固定的,所以,在识别拼音字符时,会当成英文字母来分词。

    5.9K33

    微信全文搜索优化之路

    SQLite FTS Extension SQLite FTS Extension是SQLite为全文搜索开发的一个插件,它是内嵌在标准的SQLite分布版本当中,它具有如下的特点: 搜索速度快:使用倒排索引加速查找过程...稳定性好:目前SQLite在移动端的稳定性比较好,FTS Extension就是SQLite的基础上搭建的 接入简单:Android和IOS平台本身就支持SQLite,并且FTS Extension的使用就和正常使用...SQLite表一样。...FTS5发布于2015年中。 存储架构 微信全文搜索在2014 年底上线,最初主要服务于联系人和聊天记录的业务搜索。...在一番研究以后,我发现FTS5支持自定义辅助函数,并且有比较好的API的封装,所以最后使用FTS5自定义辅助函数(MMHighLight)重新实现Offsets函数的功能,并加入优化逻辑。

    9.2K42

    微信全文搜索优化之路

    SQLite FTS Extension ---- SQLite FTS Extension是SQLite为全文搜索开发的一个插件,它是内嵌在标准的SQLite分布版本当中,它具有如下的特点: 搜索速度快...:使用倒排索引加速查找过程 稳定性好:目前SQLite在移动端的稳定性比较好,FTS Extension就是SQLite的基础上搭建的 接入简单:Android和IOS平台本身就支持SQLite,并且FTS...FTS5:和FTS4有较大变动,储存格式上有较大改进,最明显就是Instance-List的分段存储,能够支持更大的Instance-List的存储;并且开放ExtensionApi,支持自定义辅助函数...FTS5发布于2015年中。 存储架构 ---- 微信全文搜索在2014 年底上线,最初主要服务于联系人和聊天记录的业务搜索。...在一番研究以后,我发现FTS5支持自定义辅助函数,并且有比较好的API的封装,所以最后使用FTS5自定义辅助函数(MMHighLight)重新实现Offsets函数的功能,并加入优化逻辑。

    1.7K20

    微信手机端的本地数据全文检索优化之路

    (本文同步发布于:http://www.52im.net/thread-1132-1-1.html) 2、SQLite FTS Extension SQLite FTS Extension是SQLite...:Android和IOS平台本身就支持SQLite,并且FTS Extension的使用就和正常使用SQLite表一样; [4] 兼容性好:受益于SQLite本身兼容性很好,SQLite FTS Extension...FTS5发布于2015年中。 3、存储架构 微信全文搜索在2014 年底上线,最初主要服务于联系人和聊天记录的业务搜索。...在一番研究以后,我发现FTS5支持自定义辅助函数,并且有比较好的API的封装,所以最后使用FTS5自定义辅助函数(MMHighLight)重新实现Offsets函数的功能,并加入优化逻辑。...所以这里关键的实现点在于中间转化函数的实现,微信的中间转化函数MMRank是通过FTS5的辅助函数实现的。 ?

    2.6K20

    Architecture of SQLite

    本文翻译自Architecture of SQLite https://www.sqlite.org/arch.html 介绍 本文档描述了SQLite库的体系结构。...这里的信息对于那些想理解或修改SQLite内部工作的人很有用。 附近的图表显示了SQLite的主要组件以及它们如何进行互操作。 下面的文本解释了各种组件的角色。 ?...sqlite3_get_table()例程在table.c中实现。sqlite3_mprintf()例程在printf.c中找到。sqlite3_complete()接口在complete.c中。...为了避免名称冲突,SQLite库中的所有外部符号都以前缀sqlite3开头。那些用于外部使用的符号(换句话说,那些构成SQLite的API的符号)添加了下划线,因此以sqlite3开头。...vdbeapi.c文件包含到虚拟机的外部接口,如sqlite3_bind_int()和sqlite3_step()。

    1.4K30

    SQLite 简介

    SQLite 简介 本教程帮助您了解什么是SQLite,它与SQL之间的不同,为什么需要它,以及它的应用程序数据库处理方式。...SQLite源代码不受版权限制。 什么是SQLiteSQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。...就像其他数据库,SQLite引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite直接访问其存储文件。 为什么要用SQLite?...SQLite 不需要配置,这意味着不需要安装或管理。 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。...SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。 SQLite 支持SQL92(SQL2)标准的大多数查询语言的功能。

    1.9K30
    领券