文件searchalgorithm在Linux中使用索引

我想在Linux中使用索引实现文件search程序…我知道还有其他几个文件search程序像beagled。 但我这样做是为了学习目的…我感到如何做索引..我有以下想法,我从maemo映射程序应用..例如,如果你有文件名为“suresh”其索引在文件系统作为文件…

/home/$USERNAME/.file_search_index/s/u/r/e/s/h/list.txt ..这个list.txt包含名称=“suresh”的所有文件的位置…请build议一个更好的主意/algorithm来实现它…如果有任何材料上的各种文件search技术请发布… … –

Solutions Collecting From Web of "文件searchalgorithm在Linux中使用索引"

你还没有看到findutils的locate命令? 像beagled,它是免费的软件,所以你可以研究代码。

findutils包总是在寻找贡献者。

关于数据库格式的信息在http://www.gnu.org/software/findutils/manual/html_node/find_html/Database-Formats.html

比格尔用inotify使用一个非常有趣的方法。 它启动,在父目录上建立一个监视并启动另一个执行递归扫描的线程。 随着更多的目录被访问,父母看到他们,并添加更多的手表,同时看着它已经知道什么。

所以,当它开始的时候,你可以非常便宜地观看一棵树(每个目录一个表),并且把整个事物编入索引。 这也有助于确保在扫描过程中没有“错过”文件。

所以,这是你的大部分战斗。通常FS搜索程序在索引时遇到了迟缓,例如“updatedb”。

至于存储索引,我不赞成在目录中分割它。 你将在文件名数组中的每个字符本质上调用stat()。 例如some-very-long-shared-object-name.so.0就是对name中每个字符的一个stat()调用。 你可以尝试使用设计良好的SQLite3数据库。

我正在做一些非常相似的事情,一个为PCI认证(信用卡处理器)提供稍微便宜的审计手段的程序,而不使用内核审计钩子。