lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Harwood <>
Subject Re: Document links
Date Tue, 21 Sep 2010 20:09:52 GMT

> It should be possible to randomly add and delete such relationships after
> indexWriter.addDocument(), is that the idea?

Yes. A "like" action may, for example allow me to tag an existing document by connecting 2
documents - my personal "like" document and a document with content of interest.
   doc 1   = [user:mark       tag:like]
   doc 56 = [title:Lucene    body:Lucene is a search library...]

I then call:

If this was my first "Like" then I may need to contemplate using a variation of the above
API that allows a yet-to-be-committed "Document" object in place of the doc ids.

> Adding such relationships by docId would need the addition of
> a separate (from the segments) index structure

Yes, I need to think about the detail of file structures next. For now I'm sticking with thinking
about user API and functionality and assuming we can maintain cross-segment docid references
that get updated somehow at merge time.

> Would each link also have an attribute (think payload)?

I was thinking if attributes are needed (e.g. a star rating on my document "like" example)
then this could be catered for with a document e.g. rather than linking the single doc [user:mark
tag:like] to all my liked docs I could create specific doc instances of [user:mark rating:5
tag:like] and linking via that. 

> Would such relationships be named (sth like foreign key field names)?

For now I was thinking of storing simple docid->docid links.

Once we have these links we could do some funky things:
{pseudo code:}
       //My fave docs from last week
       int myLikesDocId=searchForLuceneDocWithUserNameAndTag("mark", "like");
       DocIdSet myLikedDocs =indexReader.getOutboundLinks(myLikesDocId), new Filter(myLikedDocs));

      //Other users who share my interests
      DocIdSet usersWhoLikeWhatILike = indexReader.getInboundLinks(myLikedDocs);


View raw message