For past two years I was studying on Poznan University of Technology (Poland), Institute of Computer Science (with speciality profile: Computer Networks and Distributed Systems). I have passed my final exam last monday, so I have now a Master degree. Large part of my Master Thesis was an implementation of File System with builtin semantic search capabilities.
I have written it in Java, using combination of Linux + FUSE + FUSE-J + Apache Lucene and Apache Derby database. Besides of a little bottleneck caused by exceptions usage for error reporting in FUSE-J, coding of this proof-of-concept filesystem was just a breeze. As of functionality of this filesystem, it allows to append meta-data to files (in form of multiple "attribute=value" pairs), some of those attributes ware auto guessed (from id3 tags of mp3 files or properties of PDF files). After adding those attributes to files, User could query for them just accessing a specially named "virtual" directory (eg. directory [ artist: "Mike Oldfield" ] would contain all music files with artist attribute set to "Mike Oldfield"). If file content can be turned into a text representation it is stored in attribute name "content" which is default attribute for all searches (so no need to type "[ content: blah ]", "[ blah ]" is sufficient). Whole interaction with filesystem is made by standard system calls so it is completly useable from any shell and doesn't need any specially patched file managers/applications.
I have uploaded a short flash movie from linux console session if someone is interested how it looks like from a BaSH perspective.
I hope finishing my studies will allow me to blog more often ;)