Emby高级教程:中文搜索增强实现教程

作者:jacksky6
【写作说明】整体思路和操作来源于B站大神Choyakawa , 本人也是小白一枚 , 只是对自己的操作过程做一个详细记录 。
【写作缘由】Emby的搜索功能太烂了 , 中文支持极差 。 通过分析Emby数据库采用sqlite3 , sqlite3的原生FTS索引本来中文搜索就比较烂 , 所以Emby的搜索烂这也不能完全算是Emby的锅 。
Emby本身采用c#net跨平台开发 , 我们可以通过反编译的方式修改搜索功能 , 使用wangfenjin大神的simpleFTS扩展插件 , 建立FTS索引搜索 , 以此来支持中文拼音全拼搜索 , 中文拼音首字母搜索 。
【效果展示】Emby高级教程:中文搜索增强实现教程
文章图片
Emby高级教程:中文搜索增强实现教程
文章图片
【simple插件介绍】simple是一个支持中文和拼音的sqlite3fts5拓展 。 它完整提供了微信移动端的全文检索多音字问题解决方案一文中的方案四 , 非常简单和高效地支持中文及拼音的搜索 。
【准备工作和注意事项】1、.Net反编译工具
推荐使用dnSpyEx/dnSpy的最新版本6.2 , 不要使用dnSpy/dnSpy6.1.8 ,
反编译中所有的修改请使用编辑方法而不是编辑类
2、SQLite数据库管理软件:所有的都可以 , 比如Navicat , 也可以使用命令行 。
3、请自行查找所用平台Emby的安装目录 , 本教程需要修改三个文件:
软件安装目录下system目录下的SQLitePCL.pretty.dll文件
软件安装目录下system目录下的Emby.Server.Implementations.dll文件
软件安装目录下data目录下的library.db文件
注意:请做好这三个文件的备份 , 以防数据丢失 。
Emby高级教程:中文搜索增强实现教程】system文件夹下的dll文件之间存在依赖 , 建议将system文件夹(包含所有文件)拷贝出来 。
4、所有的修改请在Emby关闭的情况下进行 。
5、所用到的工具:dnSpyEx/dnSpy和wangfenjin/simple请自行到全球最大的代码托管网站搜索下载 。
【修改SQLitePCL.pretty.dll】反编译修改SQLitePCL.pretty.dll文件中Emby链接SQLite数据库的方法 , 增加允许运行时可加载扩展sqlite3_enable_load_extension的SQLiteC-API调用 。
raw.sqlite3_enable_load_extension(sqlite,1);
Emby高级教程:中文搜索增强实现教程
文章图片
Emby高级教程:中文搜索增强实现教程
文章图片
Emby高级教程:中文搜索增强实现教程
文章图片
Emby高级教程:中文搜索增强实现教程
文章图片
Emby高级教程:中文搜索增强实现教程
文章图片
Emby高级教程:中文搜索增强实现教程
文章图片
【修改Emby.Server.Implementations.dll】1、点击文件-----打开选择Emby.Server.Implementations.dll
2、修改EmbyFTS5实现 , 使用自定义tokenizer
usingSystem.IO;databaseConnection.Execute("SELECTload_extension('"+Path.Combine(this._config.ApplicationPaths.DataPath,"libsimple")+"');");
Emby高级教程:中文搜索增强实现教程
文章图片
Emby高级教程:中文搜索增强实现教程
文章图片
Emby高级教程:中文搜索增强实现教程
文章图片
Emby高级教程:中文搜索增强实现教程
文章图片
还是在这个方法下面 , 一长串SQL中 , 修改FTS5tokenize为simple
Emby高级教程:中文搜索增强实现教程