在我的 Windows 10 系统上,如果我在包含许多文档的文件夹中搜索常用词,我会得到一长串结果。我希望能够根据每个文档中的点击次数对结果进行排序。查看可用列的列表,我认为Relevance
这是唯一可能相关的列,但在我的情况下,所有项目的结果都是相同的,890。列表中的任何其他内容似乎都不适用。
这可能吗?有谁知道 Windows Search 是否甚至在内部存储了这个指标?我什至愿意在 vb.net 中编写一些代码来实现它。
谢谢。
在我的 Windows 10 系统上,如果我在包含许多文档的文件夹中搜索常用词,我会得到一长串结果。我希望能够根据每个文档中的点击次数对结果进行排序。查看可用列的列表,我认为Relevance
这是唯一可能相关的列,但在我的情况下,所有项目的结果都是相同的,890。列表中的任何其他内容似乎都不适用。
这可能吗?有谁知道 Windows Search 是否甚至在内部存储了这个指标?我什至愿意在 vb.net 中编写一些代码来实现它。
谢谢。
此功能未内置在 Windows Search 中,尽管它可能会以可扩展存储引擎格式在内部存储频率数据。数据位于
C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb
,Search 的子文件夹中有辅助索引。虽然 Nirsoft 的免费工具ESEDatabaseView可用于查看该类型的文件,但 Windows.edb在使用时会被 Windows 搜索引擎锁定,因此您可以使用该数据做的最好的事情是停止索引并通过搜索解锁它,给您留下过时的数据。
与其重新发明搜索,不如使用更可配置的引擎(例如免费的DocFetcher )为您提供更好的服务。例如,该工具支持“模糊”搜索,并通过单词的接近程度或关键术语的重要性来加权搜索。例如,您可能会在“鲸鱼”附近搜索“Ahab”一词。
由于 DocFetcher 报告每个项目的“分数”,您可以深入了解匹配的紧密程度、文档中的频率等。
对于那些使用 Windows 10 并且熟悉 Linux 和命令行的人,我有以下基于https://askubuntu.com/a/1131185/1350649的替代解决方案
打开适用于 Linux 的 Windows 子系统 (WSL) 提示
如果缺少,请安装工具
sudo apt install unoconv
运行以下命令以获取基于词频的排序列表
for i in *.odt ; do R=`unoconv --stdout -f text $i | grep -w -o "word" | wc -l`; echo $R $i; done | sort -n
这并不快,但它可以完成工作。