跳至主要內容

搜索/索引

Andy HsuGuideAdvancedGuide大约 8 分钟

搜索/索引

如何使用

按照以下步骤开启搜索:

  1. 转到索引页,选择一个搜索索引,并单击保存;
  2. 保存索引后,单击构建索引来构建索引;
  3. 现在你可以通过点击页面右上角的搜索块或使用快捷键Ctrl + K来搜索文件。

❗❗❗ 若不按照上述提示开启会提示:Search not available


不同搜索索引之间的差异

  • 数据库:按数据库搜索,它使用现有的 data.db。它将创建一个新表,记录父目录、名称和每个对象的大小,但搜索不拆分单词,这意味着匹配您输入的关键字是否出现在对象的名称中。一般来说,如果您没有特定的搜索要求,我们建议您选择它。

  • 数据库(非全文搜索):上面使用的是全文搜索模式,但是全文搜索在使用 MySQL数据库 时作为Alist数据库会有一些奇怪的问题,暂时还未解决,所以如果你的Alist数据库更改为了 MySQL ,并且你的Alist版本 ≥3.9.1 推荐你使用这个来构建索引,虽然比全文搜索慢一些差距不是很大,但是不会搜索出奇怪的文件,比较稳妥,等未来版本修复后再通知大家使用全新的全文搜索来构建索引,如果你使用的是 sqlite3 那两个你喜欢用那个都可以

  • bleve:一个开源全文搜索引擎。它将分割对象名称中的单词,并搜索您输入的关键字。但它的搜索结果可能很奇怪,你不能得到你想要的结果,而且它会占用更多的资源。

  • sqlite3 容易触发 database is locked锁库无法写入文件

    • 解决database is locked方案:
      • 是因为数据库在构建索引,如果你还在构建过程中,请耐心等待
      • 如果是已经索引完毕,是因为开启了自动索引导致的,请关闭使用自动索引,如果还是这个问题请关闭后重新启动AList
      • 或者将数据库切换为MySQL
  • meilisearch:暂时未深度体验也不太了解具体差异,给予专业人士使用或者自己去查询一翻,查看PR链接open in new window,唯一知道的是得自己搭建open in new window使用,支持很多种方法,但是并没有守护进程等懒人操作、不支持系统依赖低于GLIBC_2.27open in new window以下的Linux系统、如果是本机搭建会自动识别,如果是其它设备可以修改配置文件的meilisearch字段内容


下表可以快速帮助您理解这两个搜索索引之间的区别:

数据库(全文搜索)数据库(非全文搜索)blevemeilisearch
搜索结果中文基本上搜不到比全文搜索准,可以搜索中文模糊匹配
搜索速度快,优缺点看上面比全文搜索慢,优缺点看上面
指定文件夹搜索支持支持不支持
硬盘占用
自动增量更新支持支持不支持

注意

若你使用的是MySQL作为数据库,建议使用 非全文搜索 (强烈推荐)

非全文搜索 虽然比不上全文搜索快,但是也慢不到哪里,若你非要使用全文搜索 可能得牺牲无法搜索中文为代价

若是使用 sqlite 作为数据库,没有全文两个数据库随便选~

全文搜索:不是在所有文件里面进行文件的文字里面进行搜索,别理解错了。


搜索提示

  • 如果你想搜索一个特定的文件夹,你必须选择数据库作为搜索索引;
  • 如果你选择数据库作为搜索索引,你的数据库类型是sqlite3,我们建议你在创建索引时不要在管理页面做任何更改,因为 sqlite3 不支持并发写,可能导致数据库锁定问题;
  • 如果你选择bleve作为搜索索引,如果你想搜索新文件或不想搜索已删除的文件,索引需要完全重建才能生效,因为bleve不支持增量更新;
  • 但对于数据库,它支持增量更新,所以你可以搜索新的文件或删除的文件,只需访问修改的文件夹(并单击'刷新'图标,如果缓存),无需重建索引,这比bleve方便得多。

忽略路径

构建索引期间跳过填写的路径,一行一个路径,可多行填写

  • 例子:
    • /aaa网盘
    • /bbb网盘/ccc文件夹

更新索引

  • (原:要更新索引的路径)

构建完所有索引后,或者某文件有大批量文件更新,但是又不方便点重新构建就可以使用这个来更新一下索引

  • 例子:

    • /aaa网盘

    • /bbb网盘/ccc文件夹


自动更新索引

⚠️ 默认是关闭状态,不自动构建索引

例如你已经构建完毕索引,但是后面又添加一个 网盘挂载 或者 文件夹更新

但是你已经构建好了索引比较多按照以往的话两个办法

  1. 一个文件夹一个文件夹的进去然后才能构建
  2. 要么全部重构比较繁琐

但是这次只要把 自动构建索引 按钮打开然后进入一下 新挂载的网盘 或者 有更新的文件夹 就会自动将这个目录里面索引的文件和文件夹自动构建索引不用一个文件夹一个文件夹的进入让他自动构建了

  • 优点:不用操心,有更新进有更新的文件夹根目录即可自动构建这个文件夹内所有的索引
  • 缺点:随时待命准备构建

有人会发现上面不是有 要更新索引的路径 也可以更新吗? 可以更新但是两者不冲突

  • 自动更新索引 :适合将所有文件都构建索引的用户
  • 更新索引 :适合 将所有文件都构建索引,但是有文件需要构建,自己手动去构建索引避免所有的都被构建索引

最大索引深度

默认为20。

外面显示的是手动构建的,更新索引选项在更新索引按钮里面选择深度。

说明:目录最多进几层,例如你有一个文件夹深度多达30层文件夹,设置为20,只构建前20层,剩下的10层不进行构建。


⚠️ 使用注意事项


数据库文件很大,清空索引后还是一样大怎么办?

正常用户都是没有修改数据库选项使用的是 sqlite 数据库来构建索引的,就会导致数据库文件特别大

  • 数据库文件在AList同级目录下的data文件夹,data.db,data.db-shm,data.db-wal

开启构建索引后,你构建的数量越多文件越大,最后不小心把机器的硬盘占满了,然后就点击了清除索引按钮,文件还是一样大这怎么办?

  • 这是因为sqlite的缓存导致的(不知道对不对),我们后面有两种解决方案

    1. 我们使用命令或者工具连接上sqlite数据库,输入:VACUUM;
    VACUUM;
    
    1. 在使用命令清理后我们更换为MySQL数据库后再来构建索引

使用命令清理前和使用命令清理后对比:上图为清理前,下图为清理后,如果没效果可以多执行几次命令。


data.db,data.db-shm,data.db-wal三个文件在备份时,data.db-shm,data.db-wal这两个文件是否需要备份

  • 建议在备份时,先将程序停止,再进行备份,到时候可以只单独备份data.db数据库文件,另外两个可以不进行备份
  • 有可能在你停止程序后data.db-shm,data.db-wal这两个文件会自动消失,也不用担心