是否有办法忽略某些模式的Windows搜索索引?
例如,我想跳过以下文件夹:
C:\Git**.git\ C:\Git**\软件包\ C:\其他\git**.git\ C:\其他\git**\软件包
这会导致搜索结果中出现数千个额外的噪声匹配。
我确实想索引C:\misc\git中的各个文件夹,除了.git或.packages子文件夹中的内容。我只找到了一种静态的方法来实现这一点,没有任何基于模式的方法。看起来这是一个常见的用例,有点像git使用.gitignore来将某些内容排除在版本控制之外。在这种情况下,它会将这些内容排除在搜索索引之外。
我在“索引位置”中没有看到任何类似的模式工具。我假设可以通过运行某种脚本来完成,以便在每次内容更改时排除当前匹配(例如,添加了C:\misc\git\somethingnew),但这将与优雅相反。
任何帮助都将不胜感激。
便士
2条答案
按热度按时间3bygqnnd1#
根据this answer由@PryrtCJ Windows注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\WorkingSetRules\
所包含的规则,其中允许使用通配符。要添加这样的规则,我建议在索引选项中添加一个.git文件夹到排除的路径,然后找到合适的密钥(URL可能是
file:///C:\[partition-or-disk-id]\path\to\.git\
之类的)。然后编辑密钥权限(选择包含.git URL的密钥并右键单击它)--你需要将密钥所有者从SYSTEM更改为你的帐户,并允许Administrators组修改密钥。如果您有权限修改它,请右键单击URL,选择修改并将其内容更改为
file:///*\.git\
。稍后恢复以前的权限(只是为了避免问题)。这样,您可以创建任何 * 过滤器,例如
file:///C:\misc\*\packages\*
r8uurelv2#
可以通过编程方式管理Windows Search索引。
您可以使用以下模式从搜索索引中排除文件夹:
file:///C:\*\packages\
与名为“packages”的文件夹及其内容匹配file:///D:\*\obj\
与名为“obj”的文件夹及其内容匹配我在Windows 11 21h2下使用C#成功地测试了这些模式。
添加新规则的示例(Powershell)
列出现有规则的示例(Powershell)
所需的
Microsoft.Search.Interop.dll
可以在in the old Windows Search 3x SDK on web archive中找到(必须将url复制并粘贴到新的选项卡中)资源: