You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by os...@apache.org on 2016/01/11 08:28:03 UTC

[3/6] jena git commit: very simple caching of Lucene query results in a hash map

very simple caching of Lucene query results in a hash map


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/9149a1df
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/9149a1df
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/9149a1df

Branch: refs/heads/master
Commit: 9149a1df8011ca1aea37f832bb4e19ef22f87f67
Parents: a943062
Author: Osma Suominen <os...@apache.org>
Authored: Tue Dec 22 18:45:50 2015 +0200
Committer: Osma Suominen <os...@apache.org>
Committed: Mon Jan 11 09:27:13 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/jena/query/text/TextQueryPF.java  | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/9149a1df/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
index 13e8848..ff21248 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
@@ -19,7 +19,10 @@
 package org.apache.jena.query.text ;
 
 import java.util.Iterator ;
+import java.util.LinkedHashMap ;
+import java.util.LinkedList ;
 import java.util.List ;
+import java.util.Map ;
 import java.util.function.Function ;
 import java.util.stream.Collectors ;
 
@@ -62,11 +65,14 @@ public class TextQueryPF extends PropertyFunctionBase {
 
     private String langArg = null;
 
+    private Map<String,List<TextHit>> queryCache = null;
+
     @Override
     public void build(PropFuncArg argSubject, Node predicate, PropFuncArg argObject, ExecutionContext execCxt) {
         super.build(argSubject, predicate, argObject, execCxt) ;
         DatasetGraph dsg = execCxt.getDataset() ;
         textIndex = chooseTextIndex(dsg) ;
+        queryCache = new LinkedHashMap();
 
         if (argSubject.isList()) {
             int size = argSubject.getArgListSize();
@@ -268,7 +274,13 @@ public class TextQueryPF extends PropertyFunctionBase {
         Explain.explain(execCxt.getContext(), "Text query: "+queryString) ;
         if ( log.isDebugEnabled())
             log.debug("Text query: {} ({})", queryString,limit) ;
-        return textIndex.query(property, queryString, limit) ;
+        String cacheKey = limit + " " + property + " " + queryString ;
+        List<TextHit> results = queryCache.get(cacheKey) ;
+        if (results == null) { /* cache miss */
+            results = textIndex.query(property, queryString, limit) ;
+            queryCache.put(cacheKey, results) ;
+        }
+        return results;
     }
     
     /** Deconstruct the node or list object argument and make a StrMatch