retrieval algorithms