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