obsidian全局搜索的一个巨大问题

obsidian的搜索存在的一个巨大问题是,无法仅仅根据阅读视图进行全局搜索(Ctrl+f的单页面搜索可以做到)而只能搜索源代码。例如对于下面的加粗与不加粗混合的文本,输入“弟弟很好”就没法搜索出结果(必须输入“弟弟**很好”“弟弟~~很好”等才能搜出):

我的弟弟很好。我的弟弟很好。我的弟弟很好。

建议:应该支持在全局搜索时忽略排版,仅根据阅读视图进行搜索(最好默认如此)

5 个赞

权宜之计 可以搜: 弟弟 很好

更完美的方案, 也希望后续官方可以优化

的确是很好的想法

这个问题把我搞得好难受,本来我用Onenote,搜索功能很渣,好不容易把大量笔记转换成markdonn了,结果发现obsidian搜索也有问题,难受死了。而且markdown格式有另外一个巨大缺点就是对表格的编辑,在markdown中,在一个单元格内换行很困难,必须使用html标签,即便有很多插件,也无法使用所见即所得的方式进行简单编辑(这方面还是OneNote的编辑功能更强、刚好用) :sob: :sob:

1 个赞

所以你为什么要在 弟弟**很好 中间插入排版语法呢?我很疑惑,你把完整的句子进行高亮,或者就是纯文本不就好了?

另外,md的设计哲学就是纯文本,区别于onenote的富文本,有得必有失。

2 个赞

简单,因为不需要高亮整个句子

因为在一个句子中高亮一些重点的词语本来就是一个需求。许多人都在这么做。这与高亮整体的句子是不同的。而md的设计哲学也并没有理由阻碍其获得更好的一些特性,即使这将使得其更加像富文本。

1 个赞

所以这应该不是一个巨大问题,而是一些需要增强的feature?

嘿,我不知道问题是否算大。我相信官方有他们自己的考量。然而的确md给obsidian带来了很多限制,这一点被很多相关领域的博主所提及。我愿意相信它们在未来将会被妥善处理。

1 个赞

md 语法就那么多而且统一,官方完全可以解决这个问题,不过就是何时解决的事情了

也可以不解决这个问题,因为搜索足够强大。如果我就是要搜高亮的词语,那咋办?

我觉得不同的模式是可以被选择的,就像是正则表达式那样。用户既可以从纯文本的角度去搜索,也可以从所见即所得的角度去搜索。

选择过多可不是什么好事,你装100个插件,每个插件都得配置,查找就很麻烦。

对此有两种方法:

  1. 提供一种很人性化的方式:比如根据关键字自动进行匹配,但显然工作量更大,增多了处理流程,更容易出bug,软件更不稳定。
  2. 提供一种自由度更大的方式:就像ob的搜索一样,你能搜正则,搜类型,布尔运算等,以符合更多需求的人。

你可能觉得我扯远了,但是请仔细想想,这个功能真的那么容易吗?

ob缓存的是纯文本,如果查找的是富文本,是否需要全局遍历一次并处理。亦或者缓存富文本?纯文本是直接字符串处理掉格式符号,还是渲染后处理?这些或许在性能上或者处理上造成一定困扰。而其它软件直接存的富文本,包括word。这就是我之前说富文本和纯文本存在差异的地方。

当然还有许多考虑的地方,但就这个问题而言,我也仅凭我的主观判断。ob选择了后者,给了更大自由度,而不是人机交互更好的方式。ob在功能上是完全没有任何问题的,也完全没必要在这方面做提升。这是我的看法。

你好。我很高兴可以与你进行持续的交流,这或许将有助于我们更加清楚地理解这个问题。

你所说的更容易出现bug,更不稳定,以及性能上的困扰,我不知道你是否考虑过我之前所说的话,也就是说按照阅读视图来进行搜索是一个额外的选项呢?可以想见,这只是增加了一个选择,不会对那些已经存在的选择造成破坏

实际上,按照阅读视图来进行搜索不一定需要进行渲染,或许只是需要一个比较复杂的正则表达式。

至于Obsidian会不会在这方面做提升,我可以确定不会。我想要表达的是,的确是有人有这样的需求。官方做什么东西,一定会有更复杂的考虑。事实上,他们曾经说过,要去做那些不容易通过插件所实现的东西。而如果现在就存在一个这样功能的插件,我是会去下载的。我无意表达更多的意思。

1 个赞

有时,我们需要高亮或加粗一些关键词、术语,这是很常见的需求。如果为了搜索,还要考虑在排版时只能高亮整个句子或短语,那真的很不好用

1 个赞

不是增强,这种功能应该时基本的,所有人都会用到的功能,而不是锦上添花、可有可无的

2 个赞

我现在因此又用回onenote了,尽管他的搜索功能很烂。。我不能指望obsidian在一段时间后实现这种搜索功能。。例如onenote十几年了,搜索问题都没有解决。。我认为这个功能在md中不太容易实现的

我认为这个功能时必须的、基本的,而不是那种可有可无的、锦上添花的功能。。能实现简单的、常用的基本需求的前提下,再去考虑复杂的、用的较少的需求;否则舍本逐末了

你所说的恐怕只是在为obsidian的缺陷在开脱,那我举一个具体的、实际中很容易碰到应用场景。比如说你的笔记中有一下文本,包含了一个术语的定义:
是一种先进后出的数据结构。栈主要的应用场景有xxx,”
文中多次提到“栈”这个术语,但是我们为了突出“栈”这个概念,就在栈的定义上,对“栈”加粗。(我想很多人会这么多,就是当提到一个新术语的定义时,要对这个术语加粗,并对整个定义的原话加上下划线(顺便一提,md还不支持下划线、波浪线这些东西))。。。当要搜索一个术语的定义时,如果搜索“栈是”,就搜不出来。。你可能想说,那搜索"栈**"不久搜索出来的吗?但有时我们不能确定是否对某个术语加了粗。。总之你的辩护理由不是”这种功能不重要“,而是”这个功能难以实现“。。连这种基本功能豆实现不了,真的不好用

1 个赞

首先,我就从来没用到过,你并不能代表所有人。

其次,我说了,ob提供一个自由度更大的方式,你完全可以用通配符进行搜索,这是一种权衡。

最后,这种小trick完全可以用插件实现,换其它软件你对此可能束手无策,但ob可以。但这不是缺陷,我可以列举出任何一款软件数十种让我不满意的地方,但这不是缺陷。