Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

可否增加全拼搜索功能? #19

Closed
Baiyssy opened this issue Sep 29, 2021 · 22 comments · Fixed by #30
Closed

可否增加全拼搜索功能? #19

Baiyssy opened this issue Sep 29, 2021 · 22 comments · Fixed by #30
Assignees
Labels
enhancement New feature or request

Comments

@Baiyssy
Copy link

Baiyssy commented Sep 29, 2021

首字母重码太多了
谢谢!

@Chaoses-Ib
Copy link
Owner

没加全拼搜索主要是考虑到性能。目前拼音搜索的实现是基于正则字符组的,而增加全拼匹配会导致同一串字母可能匹配到不同长度的汉字,比如“na”既可以是“哪”也可以是“尼奥”,这样就必然要引入分支,但是 Everything 分支的性能非常差,字符组匹配 100 个候选汉字需要 2 秒,而分支需要 15 秒,这样就会带来非常大的性能下降,让本来就不好的性能雪上加霜。

Everything v1.5 Alpha 新增加的通配符字符组和分支语法可能会提高不少性能,如果最终性能比较理想的话会再考虑添加全拼搜索。

@Chaoses-Ib Chaoses-Ib added the enhancement New feature or request label Sep 29, 2021
@Chaoses-Ib
Copy link
Owner

#13
根据目前的测试来看,Everything v1.5 Alpha 的性能仍然不够理想,通配符字符组在字符较多时性能远不如正则表达式字符组,整体查询性能虽然提升了 30% 左右,但还是耗时很长。

目前暂时不会添加全拼搜索。

@flarejune
Copy link

当我第一次看到这个插件的功能介绍时候,我就想到会有这种情况出现,于是我认为这个是最愚蠢的插件.
搜索功能,大部分情况下,都是需要尽可能精确找到自己要找的东西,何况是Everything这种全盘搜索的软件,
那得有多少文件啊,如果只是拼音首写字母匹配,已经很多重码了,如果再来个不连续匹配的话,那么有关键字就
等于无关键字了,所以个人认为这个是最愚蠢的插件,小小意见请细品.

@Chaoses-Ib
Copy link
Owner

大范围搜索不常用文件,输入汉字当然效率更高,首拼搜索的应用场景是:

  1. 配合运行次数排序,快速查找常用文件
  2. 在限制的小范围内快速查找文件

如果你没有这些场景的需求,只是偶尔使用 Everything 搜索一下文件,首拼搜索对你来说自然是一个鸡肋。对于我来说,因为我所有的用户文件都在 C:\Home 下,而且运行次数已经积累了很长时间,所以首拼搜索对于我是很实用的,常用文件用首拼搜索基本都在第一位。在这些场景下,全拼搜索反而是鸡肋的,可能还不如输入法首拼联想来得高效。
实际上你的意见已经有不少人提过了,我也很奇怪,工具不适合自己是再正常不过的事了,用不到不用就是,又没有收你钱,留着多一个选择也不会影响什么,何必还来踩上一脚,浪费自己的时间呢。

@ASC8384
Copy link

ASC8384 commented Oct 8, 2021

那请问会考虑用双拼规则下的声母搜索吗?
譬如小鹤双拼,sh简写为u

@Chaoses-Ib
Copy link
Owner

双拼的问题比全拼小一点,分支没那么复杂,再加上完整拼音所带来的候选汉字减少,整体性能或许不会下降。
不过关于性能问题我还有一个逆向 PCRE 正则引擎的想法没有尝试,如果复杂度可以接受的话,直接给引擎打下补丁,性能问题就可以彻底解决了,实现全拼和双拼也不用再有顾虑。我想在试验完这个再添加双拼,可能要等一段时间。

@ASC8384
Copy link

ASC8384 commented Oct 8, 2021

双拼的问题比全拼小一点,分支没那么复杂,再加上完整拼音所带来的候选汉字减少,整体性能或许不会下降。 不过关于性能问题我还有一个逆向 PCRE 正则引擎的想法没有尝试,如果复杂度可以接受的话,直接给引擎打下补丁,性能问题就可以彻底解决了,实现全拼和双拼也不用再有顾虑。我想在试验完这个再添加双拼,可能要等一段时间。

静候佳音

@Baiyssy
Copy link
Author

Baiyssy commented Oct 8, 2021

没加全拼搜索主要是考虑到性能。目前拼音搜索的实现是基于正则字符组的,而增加全拼匹配会导致同一串字母可能匹配到不同长度的汉字,比如“na”既可以是“哪”也可以是“尼奥”,这样就必然要引入分支,但是 Everything 分支的性能非常差,字符组匹配 100 个候选汉字需要 2 秒,而分支需要 15 秒,这样就会带来非常大的性能下降,让本来就不好的性能雪上加霜。

Everything v1.5 Alpha 新增加的通配符字符组和分支语法可能会提高不少性能,如果最终性能比较理想的话会再考虑添加全拼搜索。

如果只用全拼不用首字母性能是不是要好些呢?

@Chaoses-Ib
Copy link
Owner

会好不少,但是这样功能性就要打个折扣,本身全拼输入相比输入法就只是免去了候选词的不确定性,如果还不能混合首拼,可能整体效率就比不过输入法了。

@Baiyssy
Copy link
Author

Baiyssy commented Oct 9, 2021

会好不少,但是这样功能性就要打个折扣,本身全拼输入相比输入法就只是免去了候选词的不确定性,如果还不能混合首拼,可能整体效率就比不过输入法了。

我觉得全拼的效率应该要比首字母和拼音输入法都要高。
如果用首字母,重码实在太多,如果只记得一两个字,要搜出文件会很困难。比如记得文件名里面有“实施”这个词,输入ss会匹配n种汉字和英文组合,需要在大量结果中去找,会很费劲,很可能还不如删掉重新切换输入法输入汉字。
而且,现在用拼音输入法,我打全拼是不用过脑子的,纯肌肉记忆。但是首字母反而需要想一下,所以全拼虽然多敲几次键盘,速度可能比首字母还快。不知道大家是不是也这样。
如果用拼音输入法,重码最少,但是需要手动选字。现在的拼音输入法,打整句话很可能不用选字,但是打单独的一个字或者词,还是要手动选的,搜文件名就是输入字词的情况。事实?时时?试试?史诗?选字这个环节需要卡一下。
如果用全拼,重码比首字母大大减少,而且基本上可以完全排除英文的文件名。它的重码甚至不会比汉字多,你的硬盘上的文件不太可能同时存在大量实施、事实、时时、试试、史诗这些词,拼音输完,结果很可能已经出现在前几位了。

也就是说,用拼音输入法,你需要首先在一系列可能无关的候选词中进行选择。而直接全拼,只需要在硬盘上的文件中间选择,效率应该会更高,且更符合已经养成的操作习惯。

另外,我还经常碰到这样的情况,打开everything窗口,敲了几个键才发现没切换输入法,只能删掉,切换输入法再重新打字。如果用全拼就不会有这种情况了。

如果不太麻烦的话,可以考虑出一个全拼的版本测试一下。

谢谢!

@Chaoses-Ib
Copy link
Owner

还是先等我测试完 PCRE 引擎吧,如果能成功的话就实现首拼全拼混合匹配,不行的话就只实现“首拼或全拼”匹配。到时会添加首拼、全拼和双拼的配置开关,可以自己选择使用哪几种。

@Baiyssy
Copy link
Author

Baiyssy commented Oct 11, 2021

期待!

@Chaoses-Ib
Copy link
Owner

那请问会考虑用双拼规则下的声母搜索吗? 譬如小鹤双拼,sh简写为u

小鹤双拼.txt
我对双拼不太熟悉,能否请你确认下生成的这份全拼与小鹤双拼的对照表是否正确?

@ASC8384
Copy link

ASC8384 commented Oct 18, 2021

那请问会考虑用双拼规则下的声母搜索吗? 譬如小鹤双拼,sh简写为u

小鹤双拼.txt 我对双拼不太熟悉,能否请你确认下生成的这份全拼与小鹤双拼的对照表是否正确?

ang, 应当为 ah,其它的粗略一看都是正确的。

Chaoses-Ib added a commit that referenced this issue Nov 6, 2021
@Chaoses-Ib Chaoses-Ib self-assigned this Nov 6, 2021
@Chaoses-Ib
Copy link
Owner

已支持全拼、带声调全拼、小鹤双拼:

image

@Chaoses-Ib Chaoses-Ib linked a pull request Nov 6, 2021 that will close this issue
Merged
@Baiyssy
Copy link
Author

Baiyssy commented Nov 8, 2021

可以设置个选项关掉双拼吗?用双拼的人毕竟是少数

@Chaoses-Ib
Copy link
Owner

双拼默认就是关闭的,配置见 develop 分支的 README

# 拼音搜索
pinyin_search:
  enable: true
  mode: Auto  # Auto, Pcre, Edit
  initial: true  # 简拼
  pinyin_ascii: true  # 全拼
  pinyin_ascii_digit: true  # 带声调全拼
  double_pinyin_xiaohe: false  # 小鹤双拼
# 快速选择
quick_select:
  enable: true

@Chaoses-Ib
Copy link
Owner

可下载 v0.5-alpha 提前使用

@Chaoses-Ib
Copy link
Owner

我对双拼不太了解,按照目前设计的话,自定义需要输入 1514 个拼音的对应双拼,不太现实。不清楚有没有什么规则可以统一描述所有双拼,如果有的话可以做成自定义。

@firestarman-james
Copy link

firestarman-james commented Nov 18, 2021

我对双拼不太了解,按照目前设计的话,自定义需要输入 1514 个拼音的对应双拼,不太现实。不清楚有没有什么规则可以统一描述所有双拼,如果有的话可以做成自定义。

链接:https://pan.baidu.com/s/1SgERMn_gTFlop5jSeGQVUQ
提取码:uq4p

双拼是有规则描述文件的。我上传的规则文件是从百毒输入法解包得到的。供参考。
文件名里中文部分是我根据字母部分采测得到的,大部分肯定猜对了。
建议优先确保支持微软双拼。感谢!
部分双拼规则160721.zip

@Chaoses-Ib
Copy link
Owner

感谢 @firestarman-james 的帮助,目前已支持以下双拼:

  • 微软双拼
  • 自然码双拼
  • 小鹤双拼
  • 拼音加加双拼
  • 智能 ABC 双拼
  • 华宇双拼(紫光双拼)

会在 v0.5 正式版中发布。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants
@flarejune @firestarman-james @ASC8384 @Chaoses-Ib @Baiyssy and others