gpt4 book ai didi

c# - Windows 桌面搜索 - SQL 令人难以置信的慢 '%search%'

转载 作者:太空狗 更新时间:2023-10-30 00:36:33 25 4
gpt4 key购买 nike

我正在尝试使用 SQL 查询 Windows 桌面搜索 API。

我不得不说我真的很讨厌 Windows 7 搜索 GUI,所以我决定自己写一个。我有很多文件索引(大约 1.000.000),我想搜索名称。类似于:告诉我每个包含“兔子”的名字。

但在这里我遇到了性能问题。正在寻找

SELECT "System.ItemPathDisplay" 
FROM "SystemIndex"
WHERE System.FileName LIKE 'egon%'

真的很快。还有 %egon 替代方案。但是 %egon% 需要永远。我不确定这是索引的性质(我知道可能性大大增加)还是我做错了什么。

问题是:

  • windows 索引只是一个大的 SQL 数据库是否正确?
  • 如果是这样,我在哪里可以找到关于数据库结构(主键、索引)的准确信息。

如果我有,它基本上只是优化 SQL。

替代问题:有没有人知道一个快速的 SQL 语句来查找名称中某处带有 egon 的所有文件。

编辑:为什么我不喜欢搜索 GUI

嗯,与 XP 相比,它只是不够直观。如果您禁用狗并使用旧的 XP 界面,我可以创建如下搜索查询:

  • All files older than 1 month
  • bigger than 10 MB
  • name pattern *_homework_*.docx

在不“学习”语法的情况下在 Windows 7 中试试这个。见鬼,我不想只是为了找到一个文件而学习另一种语法。

另一个主要问题可能是我的搜索习惯。大多数时候我不知何故知道文件名(或部分)并且只需要位置。如果您以这种方式使用搜索,则会遇到几个问题:

  • 首先,您必须始终在其前面加上名称:
  • 然后文件夹名称布局很愚蠢(它是按父文件夹排序,而不是完整路径,我认为,因为.. tada...见下一点)
  • 然后,更烦人的是,如果您有一个结果列表并尝试对它们进行排序,这将花费很长时间

现在我真的认为我的系统有错误。我试图快速检查它,在一些平均大小的文件夹中搜索“测试”,他找到了一些文件。然后我尝试将它们分类为文件夹(以验证我的第二点),现在他只是一直在搜索......我的意思是真的,当我打字时他试图找到“你好”这个词......哦,完成了 - 他找到大约 20 个文件。所以,现在,让我们尝试一下……好吧,现在看来他已经恢复了……但是,还是要放慢我的口味……

所以,对搜索的诅咒够多了:-)

最佳答案

看起来他们在名称上建立索引,所以只要您指定了字符串的开头,它就可以使用索引,但如果没有,则必须使用表扫描。

假设他们使用的是 Microsoft 的全文搜索引擎,那么请尝试使用如下内容:
... WHERE system.filename CONTAINS 'egon'

基本上有两种选择:它会因为无效而被拒绝(即这个 SQL 接口(interface)不支持他们的 F-T 搜索扩展)或者它会快很多。

编辑:糟糕——语法应该是“contains(system.filename, 'egon')”。对不起。

关于c# - Windows 桌面搜索 - SQL 令人难以置信的慢 '%search%',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1541511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com