Why not have both? Full paths are important, and mainly they are more secure. I will use Unix as an example.
Let's say I hijack your .bash_profile on your Unix rig and I make an alias of /bin/ls to a new binary called ls. Then I change the binary so it does what I want in addition to having it list.
So, every time you run it, it would list whatever it is you told it to on your terminal session and also execute a script I plotted on your machine.
Now, if I am writing a script, I want to use the full file path in case something like this has happened. So, if I invoke ls to say, list files for a loop in a script, I will use the full path of /bin/ls and that way the script knows exactly what to use, where if I just use ls by itself, it does the command and executes something else.
Editing someone's bash profile and $PATH is rather easy if you got physical access to a machine.
So, using full paths is important and more secure, but that doesn't mean you can't use meta data to search for things. From a programming perspective full paths and heck even a networking perspective it is more efficient and more secure.
If search features went over the WAN were allowed to do that it would generate a lot of over head and lag on a network. If you specify full paths it will search with in that path.
You can have both, but you will always need a hierarchy and to use full file paths.