A hierarchy forms naturally from iterative steps of aggregation and differentiation: first, group all similar objects together; then, for each high-level group, look for differences within each group, and split the groups into smaller subgroups. Rinse and repeat until you’ve reached an acceptable number of items per group.
I’m not a big fan of semantic search itself, nor do I enjoy meticulously tagging my files. But I would love to have different views of my files, based on different metadata.
I know that I’m not always searching for files along the same hierarchy: sometimes I want to search along a timeline, because I know that I edited two files around the same time. Or I remember where I was when I wrote something, and I’d like to search on geolocation. Sometimes I know that I’ve implemented a similar feature for a different project, and want to copy/review what I did then.
All these searches still have hierarchical components in them: in the “date” case, I would expect to browse to a generic “N weeks ago” directory, look at a few specific items to get my bearings, and start browsing deeper to narrow my date range, or move forward or backward in time. In the geolocation case, I’d want to pull up a map, click on a country, then a city or area, and look at the files I accessed while there. As for the project example, I probably have the project files lying around in a hierarchical directory already. But I’d want to access only the relevant feature file, not browse the entire project structure again.
For me, the problem with non-hierarchic interfaces isn’t just the lack of metadata: it’s a lack of tools for visualizing non-hierarchic matches. Every search I described above requires its own GUI…