Author: j16sdiz
Date: 2008-12-17 07:17:31 +0000 (Wed, 17 Dec 2008)
New Revision: 24420

Modified:
   trunk/plugins/XMLSpider/XMLSpider.java
Log:
cache for <Term>

Modified: trunk/plugins/XMLSpider/XMLSpider.java
===================================================================
--- trunk/plugins/XMLSpider/XMLSpider.java      2008-12-17 07:17:22 UTC (rev 
24419)
+++ trunk/plugins/XMLSpider/XMLSpider.java      2008-12-17 07:17:31 UTC (rev 
24420)
@@ -20,6 +20,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -1462,19 +1463,34 @@
                        return null;
        }
 
+       protected Map<String, Term> termCache = new LinkedHashMap<String, 
Term>() {
+               protected boolean removeEldestEntry(Map.Entry<String, Term> 
eldest) {
+                       return size() > 128;
+               }
+       };
+
        protected Term getTermByWord(String word, boolean create) {
                synchronized (this) {
+                       Term cachedTerm = termCache.get(word);
+                       if (cachedTerm != null)
+                               return cachedTerm;
+
                        Query query = db.query();
                        query.constrain(Term.class);
                        query.descend("word").constrain(word);
                        ObjectSet<Term> set = query.execute();
 
-                       if (set.hasNext())
-                               return set.next();
-                       else if (create) {
-                               Term term = new Term(word);
-                               db.store(term);
-                               return term;
+                       if (set.hasNext()) {
+                               cachedTerm = set.next();
+                               termCache.put(word, cachedTerm);
+
+                               return cachedTerm;
+                       } else if (create) {
+                               cachedTerm = new Term(word);
+                               termCache.put(word, cachedTerm);
+                               db.store(cachedTerm);
+
+                               return cachedTerm;
                        } else
                                return null;
                }

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to