【问题标题】:How can I quickly search my code using Windows?如何使用 Windows 快速搜索我的代码?
【发布时间】:2011-07-22 00:45:24
【问题描述】:

我遇到了与this question 相同的问题,Windows 除外。我们的产品有超过 100 MB 的代码库,在其中搜索内容需要花费大量时间(几分钟)。如果您可以将搜索范围缩小到特定的子文件夹,这很好,但这并不总是可行的。

我想知道是否有一些工具可以使它更快,可能是通过索引。准确性是最重要的,如果某个子字符串存在于某处,则必须找到它,即使该文件未编入索引或索引已过期。如果在搜索时忽略 .svn 文件夹也是理想的。

如果做不到这一点,我想知道我是否可以自己制作类似的东西。是否有现成的索引引擎可用于此类任务?我想知道 Windows 索引服务(或现在所谓的任何东西),但到目前为止,我对它(Windows 标准文件搜索工具)的体验相当糟糕,它经常丢失它面前的文件.

【问题讨论】:

    标签: windows search indexing


    【解决方案1】:

    是的,我也看到过 Window Indexing 服务丢失文件,但我没有查看 KB 或用户论坛的解释。我很高兴看到它证实不只是我;-)!

    似乎有很多可用的文件索引程序,如果您找不到满足您需求的程序,我会感到惊讶(尽管,请参阅后面)。

    以下是一些需要考虑的事项:

    如果您的团队使用的是 IDE,是否有索引功能/插件? (没有一个 SVN 提供索引功能?)。 另外,在您的问题中添加一些标签,以便其他使用与您使用的开发环境相同的 Windows 开发人员可以看到。

    您提供的 SO 链接提到了几个选项:slocate、rlocate,我找到了 mlocate。 slocate 的维基百科页面说 Locate32 for Windows Windows analog of GNU locate with GUI, released under GNU license 这似乎满足您的主要要求。查看带有多选项卡界面(一个标记为高级)的屏幕截图,我希望您可以排除 svn(至少从结果中,可能从索引中)。

    您对

    的要求

    如果某处存在子字符串,它 必须找到,即使该文件不是 索引或索引已过期。

    似乎矛盾。对于子字符串要求,我可以看到许多索引程序忽略了 c 语言语法元素({([])} 等),例如,'then' 要么被删除,因为它被认为是干扰词,要么它得到归结为“the”,然后将其删除,因为它是干扰词。

    要达到“必须找到”,并且确实可以肯定,您必须开发一个测试套件来查看索引程序对任何极端情况的处理。 (对于 100 MB 的代码库,这不是不可能的,尤其是您正在考虑自行开发)。

    最后'即使文件没有被索引......'。好吧,您要么使用索引,要么不使用(显然)。不幸的是,根据您的要求,虽然 rlocate 一直在寻找更改,但 slocate (在 Unix 上)似乎没有。如果您阅读/查看locate32 的文档或用户论坛,您可能会得到所需的答案。

    Rlocate 会给你你需要的东西,但是来自rlocate page 'rlocate 只能在 Linux 2.6 版上工作。'。 mlocate 似乎也没有 Windows 端口。

    最后,我发现一个关于 mlocate 的有趣链接:mlocate vs rlocate。这是 google 缓存,因为 redhat.com 说“不可用”。

    【讨论】:

    • “即使文件没有被索引或者索引已经过期”大概意思是索引存储了修改日期等元数据,文件的完整列表是从目录中获取的,对于如果元数据匹配,则使用索引的每个文件,否则打开文件并执行线性搜索(并且可能在此过程中更新索引)。
    • @BenVoigt :我把他的话理解为,没有索引,因为要么只有开发副本已更改(可能尚未写入文件?)(或未签入)或索引器周期尚未捡到零钱了。在规范中“从不说‘从不’”(除非你真的是认真的)。但规格完全是另一回事。 ;-) 感谢您的另类见解!
    • Doah,他没有说永远,而是“必须找到它”(看起来很笨拙);-%,作为用例中的一个术语,这也是相当无情的。晚了,晚安!
    • 我真的是在索引器没有开始索引文件的情况下使用它。换句话说 - 索引搜索的结果应该与简单完整搜索的结果相同(就像我现在正在做的那样),除了更快。换句话说 - 如果一个文件包含我输入的子字符串,它应该在搜索结果中,没有任何借口。
    • 哦,我的意思是整个事情将在我自己的机器上本地。我不想搜索最新签入的代码或类似的东西。只是我自己本地机器上的文件夹。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    相关资源
    最近更新 更多