2011-11-28 71 views
2

我們有很多的代碼,查詢Linux框上的一大堆文件夾。每當我必須找到一個腳本,我做一個fgrep -ircl --include=*.{sql, py, sh} "Keyword" *索引/存儲用於搜索/檢索的代碼(腳本,查詢)的最佳高效方法是什麼?

我打算創建一個簡單的搜索界面(網絡),它可以讓你搜索一個關鍵字,文件類型和顯示文件的位置,並從生成的文件的摘錄。 Lucene可能是一個很好的候選人,但我不想爲此目的創建所有文件的副本。

我正計劃在下班時間每天使用Python腳本對文件建立索引。更像Google桌面我猜,但對於Web(跨平臺可用性)。

你們建議的是完成這項任務的最佳方式?

回答

0

我寫了一個perl腳本waaaaay回來的時候提供一個Web界面的結果,仍然工作在我不贊成blackbeltvb.com的網站,如果你想看看。它做了一次實時搜索,沒有索引,也沒有摘錄。

我也寫了這並排名結果,並摘錄wugnet.com搜索和架構這就是現在QB桌面搜索。在你的情況下,我會採取這種方法 - 只需要一個cron作業,將新的或更新的腳本/文件添加到數據庫中,一個大文本字段,其他字段包含文件名和類型等元數據。然後有一個網絡接口到該數據庫,以搜索:

select * from data where keyword like '%word%' and keyword (or keyword) etc... 

有上blackbeltvb.com一個FAQ顯示瞭如何構建一個SQL搜索排名的關鍵字結果,例如「發現的所有關鍵字」,「一些發現」等...

+0

我總是和我的朋友們極力反對在數據庫中存儲完整的文件COS'我認爲關係數據庫設計時沒有考慮到這一點還是我可能是錯的,但我擔心的效率。如果我這樣做,那麼利用wordpress的搜索系統與我的文件更有意義(最小的努力)。你說什麼? – ThinkCode

+0

我已經使用這種技術來存儲非常大的記錄集 - 我記得有一個測試結果超過了500MB。做一個像搜索這樣的文本最多花費大約30秒,測試返回大約2000行 - 這是使用舊的ADODB的東西。請注意,我沒有使用「全文」索引,而只是使用全文搜索。我也用MySQL和Sybase來完成這項工作,並獲得了同樣出色的結果。一個可比較的用例是維基百科 - 非常大的文本文章在非常大的行集中搜索全文,MySQL。例如,對MongoDB進行測試會很有趣。 –

0

使用Python,Xapian是您應該考慮的唯一解決方案。這是更多的「裸機」比Lucene的,但它有一個爲Python綁定到本地C++實行一流的支持,並且是方式更小,更快比Lucene是與現實世界的數據集,我的意思是大型數據集。

+0

我正在瀏覽Xapian的文檔。它看起來像索引web文檔(網站)。在我的情況下,它一般索引代碼/查詢/腳本。我想一些調整索引我的文件,但他們駐留在我的開發服務器,我們使用一個單獨的服務器的Web服務器。我現在必須深入探索!感謝您的鏈接... – ThinkCode

+0

這是一個全文索引器,並且可以索引您所說的任何文本 –

相關問題