是的,我也看到窗口索引服務未命中文件,但我沒有檢查知識庫或用戶論壇的解釋。我很高興看到它確認它不只是我;-)!
看起來有很多可用的文件索引程序,如果找不到滿足您需要的文件索引程序,我會感到驚訝(雖然見後面的內容)。
這裏有一些事情要考慮:
如果你的團隊使用IDE,是不是有一個索引功能/插件? (沒有一個SVN提供索引功能?)。 也,爲您的問題添加一些標籤,以便其他窗口開發人員可以看到使用您正在使用的相同開發環境。
您提供的SO鏈接提到了幾個選項:slocate,rlocate和我找到了mlocate。 slocate的維基百科頁面說 Locate32 for Windows Windows analog of GNU locate with GUI, released under GNU license 這似乎符合您的主要要求。用多標籤界面查看屏幕截圖(一個標記爲高級)會讓我希望能夠排除svn(至少從結果中,可能來自索引)。
您的
要求如果子存在於某個地方,它 必須找到,即使該文件不是 索引或者索引是過時的。
似乎矛盾。對於子字符串的要求,我可以看到許多索引程序忽略了clang的語法元素({([])}等),例如,'then'被刪除是因爲它被認爲是一個噪音詞,或者它被獲取歸咎於'the',那麼THEN被刪除,因爲它是噪音詞。
要到「必須要找到」,和真的可以肯定,你就必須建立一個測試套件,看看有什麼索引程序是做任何事情的極端情況。 (對於100 MB的代碼庫來說,這並不是問題所在,特別是因爲您正在考慮自行開發)。
最後'即使文件未被索引...'。那麼,你要麼使用索引,要麼不使用(顯然)。不幸的是,爲了您的要求,雖然rlocate一直在尋找變化,但slocate(在Unix上)看起來並不如此。可能如果你閱讀/檢查locate32的文檔或用戶論壇,你會得到你需要的答案。
Rlocate會給你你所需要的,但是從rlocate page'rlocate只能在2.6版本的Linux上運行'。 mlocate似乎只有一個Windows端口。
最後,這裏是我發現的有趣的關於mlocate的鏈接:mlocate vs rlocate。這是google緩存,因爲redhat.com說'不可用'。
「即使文件沒有編入索引或索引已過期」大概意味着索引存儲了諸如修改日期之類的元數據,文件的完整列表是從目錄中獲取的,並且對於每個文件索引是在元數據匹配時使用,否則打開文件並執行線性搜索(也可能在過程中更新索引)。 – 2011-03-27 03:25:06
@ BenVoigt:我把他的短語的意思,沒有索引,因爲只有開發副本已經改變(可能還沒有寫入文件?)(或沒有簽入)或索引器週期還沒有拿起變化。 「在規範中永遠不要說'從不'(除非你真的**是這個意思)。但規格是另一個主題。 ;-)感謝您的替代見解! – shellter 2011-03-27 03:48:19
Doah,他沒有說永遠不會,而是「它必須找到」(羞怯的樣子);%,這在用例中也是相當無情的。晚了,G-night! – shellter 2011-03-27 04:00:29