> It depends on how the search data is keyed. Yes, it will be separate from
> the actual data, but we have to determine just how we route search
> requests.
Er, not only do we have a proposal for this, but I have already begun to
implement it!
The idea is that you have a search query like "contains("hello") and
contains("goodbye") or matches("fred")". On recieving a request for
data matching this key, each plain-text key in the datastore is compared
against the search and given a score between 0 and 1, 1 being a perfect
match (fuzzy logic is used to determine this score). If any data gets a
1 then it is returned immediately. If not, the best score on the node
is checked against one or more "best so far" scores transmitted with the
search. If one of our local keys beats these scores then it is added to
this list in the appropriate place. The request is then forwarded in
the usual manner to the node corresponding to the highest scoring key.
When the request times out or finds a perfect match it passes back along
the path, bringing with it the list of "best-so-far" keys.
This way we get a yahoo or altavista-style search mechanism which will
give us a nice list of closest/next closest keys.
I have only begun to implement this but take a look at the
Freenet.search package to get an idea of what I am talking about.
Ian.
_______________________________________________
Freenet-dev mailing list
Freenet-dev at lists.sourceforge.net
http://lists.sourceforge.net/mailman/listinfo/freenet-dev