小心,你的思源可能搜索不到想要的内容

使用思源的过程中,随着文档数量的增多,你有没有发现,有时你的思源无法搜索到指定的关键词?

没错,这不是错觉,这是真实存在的。

那么,原因出在哪呢?

这是因为思源默认的搜索结果只有 64 条,不过,这个条数可以通过设置修改,在设置 》搜索 》搜索结果显示数中可以修改,这里建议修改为 1024 或 2048,可根据自己的实际情况修改,不宜设置过大,过大可能会在搜索时出现卡顿(注意,这个设置同时会影响到 api 的查询结果)。

但,你以为这样修改后就万事大吉了吗?

并不是,你可能还面临搜索不到的情况,原因是思源没有分页。

什么意思?什么是分页?为什么要分页?

假设有这么一个场景,假设数据库有 1 万条记录,但系统最多只允许搜索 500 条结果,如果某个关键词搜索结果是 2000 条,那么无论倒序或正序都无法找到中间的数据,假设用户不记得其他关键词了,只记得这一个关键词,而这个关键词结果是 2000 条,有什么办法让用户能看到中间的结果呢?

没错,就是通过分页显示,每次显示 500 条,一页页查看,就能看到全部数据了。

但,思源的搜索是没有分页的,假设你设置的最大搜索结果显示数是 500 的话,这意味着,你只能看到前面的 500 条(如果正序的话)和后面的 500 条(如果倒序的话)。

那有没有办法查看到中间的 1000 条呢?

比较麻烦,

一,把搜索结果显示数设置的足够大,可以,但不推荐,如果查询条数太多,查询可能会出现卡顿现象。

二,可以通过查询语法,AND OR 等缩小搜索范围,使结果小于 500 条,但前提是必须记得其他关键词或一定不包含的关键词等。

三,可以通过 SQL 查询(没错,思源搜索是支持通过 SQL 查询的,可能有些萌新还不知道),然后通过创建时间或更新时间等缩小查询范围,使搜索结果缩小到 500 条以内,但前提是必须记得文档的大致时间范围,如果不记得了只能通过时间段一点点试了。

但要注意,用创建时间或更新时间可能会出现漏掉或查询到重复数据情况,因为创建时间或更新时间可能相同。如果用 offset 分页,当数据量巨大的情况下,后面的分页数据可能会卡顿。因为思源数据库没有自增的 id,目前没有更好的办法解决这个问题,但如果数据量不是巨大的情况下,只要你的查询不卡顿,建议直接用 offset 分页。

当然,如果你是资深用户,也可以直接通过 sqlite 客户端查询,这个不受思源查询条数的限制,但无法解决数量巨大情况下的分页卡顿问题。

那么,如果极端情况,比如,数据量巨大,SQL 查询卡顿情况下该怎么办呢?

这种情况下,一是建议根据自身情况把空间分割成两个或多个空间,二是建议使用第三方查询工具,比如 everything,然后根据查询结果找到文档 id 后再在思源或 sqlite 客户端中用 SQL 查询。

如果你频繁查询且觉得 everything 不便的话,可以自己搭建全文检索引擎,太过复杂不在本文讨论范围。

总结:

  1. 搜索结果显示设置,建议设置为 1024 或 2048,也建议官方默认用 1024 或 2048,64 对普通用户太小了,很容易出现搜索不到情况,且萌新们会很懵。 @88250
  2. 思源搜索中,用查询语法或 sql 缩小搜索范围,但要注意分页问题及时间查询可能出现的漏数据或数据重复问题。
  3. 第三方 sqlite 客户端 SQL 查询,适合复杂查询,且不想受查询条数限制,数据量适中,不出现分页卡顿的情况。
  4. 第三方软件查询,比如 everthing,查询到结果后,再在思源中或 sqlite 客户端中用 SQL 搜索,适合极端情况,数据量巨大或 SQL 查询卡顿等场景。
  5. 其他方案,比如自己搭建全文检索引擎等,太过复杂,不适合普通用户。
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22424 引用 • 89792 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 2 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 538 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 477 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    190 引用 • 1057 回帖 • 3 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 57 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • 音乐

    你听到信仰的声音了么?

    60 引用 • 511 回帖 • 1 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    352 引用 • 1815 回帖 • 5 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 338 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    8 引用 • 30 回帖 • 407 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 631 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 697 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1327 回帖 • 1 关注
  • 自由行
    12 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 16 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 1 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    945 引用 • 943 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 1 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 617 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 477 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖