Using collaborative filtering to weave an information tapestry