Dear all, I am currently trying to implement a personalized ranking with Lucene 3.6 for the search in a (non-commercial) social bookmarking system. The ranking of the search results is supposed to take into account the user who is logged in and several tags that define the "topic" of the search. The "parts" of that scoring are precomputed and just "combined" to a new overall score during search time.
This works already well using a ValueSource that fetches scores from a database. The downside is that there is a database access for every search in the system - this can be a bottleneck. To relieve the database it would be perfect if it would be possible to base the scoring on the Lucene index only. Is there a way to store those scoring values within the index and access them later? For every Document these would be an unsteady number of values for different users and tags that must be combined later during search time. I already experimented with that, but fetching Documents during search time in order to access the fields seems to have an atrocious performance. Like in a CustomScoreProvider (more or less pseudo code): @Override public float customScore(int docId, float subQueryScore, float[] valSrcScores) { Document doc = indexReader.doc(docId); float score1 = doc.get("someScoreForAGivenTag"); float score2 = doc.get("someScoreForAnotherGivenTag"); float score3 = doc.get("someScoreForTheLoggedInUser"); return score1 + score2 + score3; } Any ideas? Thanks, Sebastian -- View this message in context: http://lucene.472066.n3.nabble.com/Personalized-ranking-using-pre-computed-scores-tp4002683.html Sent from the Lucene - Java Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org