Re: Feature freeze imminent

Tuomo Valkonen <[email protected]>
Newsgroups gmane.comp.window-managers.ion.general
Message-ID <[email protected]>
On 2007-02-27, Sam Mason <[email protected]> wrote:
> I tend to get annoyed when things fit into several categories and having
> to choose between one.  

Yeah, and I hate also deciding between "todo/ion" and "ion/todo", 
and such cases.

> I thought that was because as the filesystem grew there would be many
> more files relative to tags.  

It depends on the use I guess. If, say, you would be saving email in
the SetFS, each with its MessageID as one tag, and other information
as other tags (say, 'ion/list/[email protected]/msg.123098asdfasdf234'),
there would be more tags than files. But in many other use cases the
situation might be the opposite.

> If these names were treated the same as the rest of the tags thos
> would kill my naive pruning attempts.  One possible fix would be to
> diffrentiate between the filename and it's tags.  This is very different
> from what you wanted to do, but I'm not sure if it would be bad in
> practice.  

I've thought about a lot of extensions to the basic scheme, because,
well it is not perfect, and there are still many situations where
it is difficult to decide how one should tag things. (Even that
example above, 'ion/list/[email protected]/msg.123098asdfasdf234' could
be rendered in various different ways.) However, I've decided against
most of these, because they would unnecessarily complicate the system,
without really solving anything. One of these things is a distinguished
file name component. KISS. 

>> (If there are objects with immediate successor
>> tag sets to the search set, the extra tags _must_ be included in the
>> result, and therefore creating even such dummy "directories" will let
>> one control the results.)
>
> I'm not sure how you would identify these by looking at the frequency
> of occurance, wouldn't you just get two tags occuring with the same
> frequency?

Suppose you search by 'foo/bar', and get 'foo/bar/baz' among the 
(fully qualified) results. The you absolutely have to list 'baz'
in the output, because there's no other route to it, there being
no additional tags. However, if you get the result 'foo/bar/baz/quk',
but do _not_ get 'foo/bar/baz', you do not have to list 'baz', as
'quk' provides a path to the result 'foo/bar/baz/quk'. 

You see, if you have a file with the set A of tags, and a file with
the set B of tags, superset of A, you do not have to have the files
with the sets of tags C_i, where C_i is between A and B. However, 
if you want to, you can create such dummy files ("directories"), and
thus direct the pruner.

The pruning operation would be unnecessary/automatic if we, instead 
of tag bitmaps, stored the partial order of the tag sets in the FS. 
Such a partial order would also immediately provide the structure to
use for search for a file with exactly the given set of tags. However,
the partial order structure seems intractable to maintain. (Consider 
the number of subsets of a set.) Not that I've given it careful 
thought yet...

> That all sounds like quite a hard problem for any reasonable number of
> objects and tags.

Yes, the optimal pruning (at least without bounds on the number of
tags per file) is (NP-) hard. However, sub-optimal should suffice.
Of course, the pruning method can be user-tunable, and perhaps even
some simple greedy lexicographical pruning would suffice sometimes
(i.e. if an object is not covered by one of the tags seen yet, take
the first of its tags in, say, lexicographical order, not part of the
search set). Or maybe one could use the total occurence frequencies 
of the tags (which can be stored on the fs) when there are many 
results, and use the frequency within the results, when there aren't
that many. Infact, if some program one wants particular kind of
results, this could be configured in some path element:
foo/#created:year=2006/#prune:alltags/ (demonstrating also the
additional filters).

-- 
Tuomo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.