[ https://issues.apache.org/jira/browse/SOLR-2906?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13153258#comment-13153258 ]
Yonik Seeley commented on SOLR-2906: ------------------------------------ bq. I've been trying to find my bug. Looking back at the original LRU implementation, I have no idea how it's working. Heh... it is pretty complex, and I did try to add a ton of comments because of that. The basic idea is that I wanted to avoid an O(n*log( n )) solution of sorting everything and then discarding the lowest. In my testing, it seems to work, and we often just need to take a singe O( n ) pass to evict all the entries we need. The comment at the top is the most important to understanding how it works: {code} // if we want to keep at least 1000 entries, then timestamps of // current through current-1000 are guaranteed not to be the oldest (but that does // not mean there are 1000 entries in that group... it's acutally anywhere between // 1 and 1000). // Also, if we want to remove 500 entries, then // oldestEntry through oldestEntry+500 are guaranteed to be // removed (however many there are there). {code} But really, it seems like you should disregard all the algorithmic stuff in LRU when implementing LFU. If you think you see a bug in the existing LRU stuff, you're going to have to spell it out for me a bit more. > Implement LFU Cache > ------------------- > > Key: SOLR-2906 > URL: https://issues.apache.org/jira/browse/SOLR-2906 > Project: Solr > Issue Type: Sub-task > Components: search > Affects Versions: 3.4 > Reporter: Shawn Heisey > Priority: Minor > Attachments: ConcurrentLFUCache.java, FastLFUCache.java > > > Implement an LFU (Least Frequently Used) cache as the first step towards a > full ARC cache -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org