Semi-distributed searching (and maybe fully distributed too)
Matthew Toseland <toad-EI5O+8PHWbJeeLb3ft/[email protected]> Mon, 19 Jul 2010 21:55:26 +0100
| Newsgroups | gmane.network.freenet.technical |
|---|---|
| Message-ID | <[email protected]> |
--===============1082997058== Content-Type: multipart/signed; boundary="nextPart23274658.yc58ipW54A"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit --nextPart23274658.yc58ipW54A Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =46ASD paper: http://freenetproject.org/papers/kronfol_final_thesis.pdf The FASD paper enables keyword searching but is spammable. Basically this i= s really easy (I haven't read it in a while so my terminology may be comple= tely different to his): =2D Keywords are hashed, of course, and these hashes translate to routing l= ocations. =2D An index element has a list of keywords connected to it. =2D These are inserted as normal keys, except that they are inserted to the= locations of *each* of the keywords. =2D A search can be routed to all of the keyword locations or to some subse= t of them. It will include a list of keywords. =2D The receiving nodes will send back any index elements that match the se= arch. =2D Standard algorithms for relevance are used to rank results (based on re= lative frequency etc). This can easily be extended for arbitrary insert-tim= e relevance numbers. =2D I don't recall whether flow control was specified, it could become a pr= oblem, but the obvious solution is just to limit the number of returned ite= ms. The fundamental problem has always been spam: These are effectively KSKs, a= nd when you fetch them you propagate all the spam that the spammer has inse= rted. So solve it the same way we solve this for chat. All we have to do to make = =46ASD feasible is: =2D Make the items signed. =2D Send a compressed list of the inserter identities we are interested in = along with the request. Clearly scalability is limited in much the same way as it is for chat. Howe= ver it should be workable provided there is a certain amount of aggregation= and centralisation at the end-user level. And it's a big improvement from = having to download several huge indexes and intersect them on the client. A= rguably it may be more efficient to use this mechanism only for popular key= words; for unpopular keywords the btree indexes should be very efficient. A= nd it's probably a useful primitive for many applications... Could it be made fully distributed, without needing a WoT? Yes, but only wi= th: 1) Some sort of reputation feedback mechanism. This most likely involves no= t propagating, or de-propagating, content that was fetched and not wanted, = and 2) A sufficiently high cost for inserts of keywords to deter spamming. E.g.= something similar to the Scarce KSKs proposal - limit the number of keywor= d index items that can be inserted to one per X seconds per link. These are in principle feasible but may open serious attacks e.g. the first= may introduce censorship attacks, links to the wider question of is it saf= e ever to allow to discover the location of a document without propagating = it. IMHO the main issue there is path folding, and we can turn path folding= off for keyword searches (just like we turn it off for SSKs and inserts). = Plus, will users give sufficient useful feedback? KISS: Simplest mechanism: Keep an LRU (random replacement better for data s= torage but not here). When a fetch happens, generate an unforgeable token f= or each returned datum. If the user gives positive feedback, this is sent b= ack to us, we "spend" the token (i.e. commit it to persistent storage, it c= annot be spent twice, like digicash), and promote the item. This would be a= n operation similar to an insert, which would promote on those nodes where = it matched the original fetch. Obviously it will only work for a relatively= short period after the original request. We might have recently fetched it= ems stored in a special cache to be promoted into the main cache if feedbac= k comes in, and dropped if it doesn't. To prevent abuse, we could perhaps u= se rate limiting similar to that proposed for inserting? A spammer keeping = stuff in the cache indefinitely without anyone else fetching it may be poss= ible by repeatedly requesting (he can't repeatedly insert) - but not if we = don't promote items that we have already returned from a node that was clos= e to the originator. Or we just impose rate limiting on search requests as = well as inserts. Or ignore it - spam is only a problem if it is in volume, = and inserts are throttled anyway. Hmmm, what exactly does FASD say about this? My recollection was that FASD = was spammable. I should really read the paper again! It looks like it *migh= t* be a tractable problem ... And can these mechanisms prevent spam on chat too?? Yes, chat is essentiall= y a search problem. --nextPart23274658.yc58ipW54A Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABEIAAYFAkxEu78ACgkQYUNbc3WUHYiQrgCfcTMtUuz60+W8wPqow0VwpjfF AHYAoLNNHtHreVA3S+2oiSmcI4GduoQC =JvGW -----END PGP SIGNATURE----- --nextPart23274658.yc58ipW54A-- --===============1082997058== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Tech mailing list [email protected] http://freenetproject.org/cgi-bin/mailman/listinfo/tech --===============1082997058==--