Author: dflorey
Date: Mon Dec 12 06:39:21 2005
New Revision: 356263

URL: http://svn.apache.org/viewcvs?rev=356263&view=rev
Log:
Applied patch from Max Pfingsthorn (Bug 36045) for better search performance 
using Lucene based search.

Modified:
    
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicQueryEnvelope.java
    
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicSearchLanguage.java
    
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java

Modified: 
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicQueryEnvelope.java
URL: 
http://svn.apache.org/viewcvs/jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicQueryEnvelope.java?rev=356263&r1=356262&r2=356263&view=diff
==============================================================================
--- 
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicQueryEnvelope.java
 (original)
+++ 
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicQueryEnvelope.java
 Mon Dec 12 06:39:21 2005
@@ -87,18 +87,18 @@
         return null;
     }
     
-    private BasicQueryImpl topLevelQuery;
-    private QueryScope topLevelQueryScope;
+    protected BasicQuery topLevelQuery;
+    protected QueryScope topLevelQueryScope;
  
-    private Map subQueries = new HashMap();
+    protected Map subQueries = new HashMap();
     
-    private QueryTree queryTree;
+    protected QueryTree queryTree;
     
-    private int queryDepth;
+    protected int queryDepth;
     
-    private SlideUri slideUri;
+    protected SlideUri slideUri;
     
-    private SearchToken token;
+    protected SearchToken token;
     
     
     /*
@@ -230,7 +230,7 @@
      * @return   a QueryScope
      *
      */
-    private QueryScope calculateSubQueryScope (Scope scope) {
+    protected QueryScope calculateSubQueryScope (Scope scope) {
         int relDepth = queryTree.relativeDepth (scope);
         int subQueryDepth;
 //        if (queryTree.hasChildren (scope)) {
@@ -288,7 +288,7 @@
      * @throws   SlideRuntimeException
      *
      */
-    private BasicQueryImpl createSubQuery (Namespace namespace,
+    protected BasicQueryImpl createSubQuery (Namespace namespace,
                                            String slideScope,
                                            SearchToken token)
         throws SlideRuntimeException

Modified: 
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicSearchLanguage.java
URL: 
http://svn.apache.org/viewcvs/jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicSearchLanguage.java?rev=356263&r1=356262&r2=356263&view=diff
==============================================================================
--- 
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicSearchLanguage.java
 (original)
+++ 
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/BasicSearchLanguage.java
 Mon Dec 12 06:39:21 2005
@@ -43,6 +43,7 @@
 import org.jdom.input.SAXBuilder;
 
 import java.io.StringReader;
+import java.lang.reflect.Constructor;
 
 /**
  * Represent the BasicSearchLanguage for Slide
@@ -58,6 +59,7 @@
     
     /** the property name for the store specific BasicQuery implementation if 
any */
     static public final String BASIC_QUERY_CLASS = "basicQueryClass";
+    static public final String BASIC_QUERY_ENVELOPE_CLASS = 
"basicQueryEnvelopeClass";
     
     public BasicSearchLanguage () {}
     
@@ -128,7 +130,29 @@
         
         
         if (useEnvelope) {
-            query = new BasicQueryEnvelope (token, scope);
+           
+            
+            Uri uri = token.getNamespace().getUri(token.getSlideToken(), 
token.getSlideContext().getSlidePath(scope.getHref()));
+            
+            AbstractStore store = (AbstractStore)uri.getStore();
+            String className = (String)store.getParameter 
(BASIC_QUERY_ENVELOPE_CLASS);
+            
+            if (className != null) {
+                try {
+                    Class queryClass = Class.forName (className);
+                    Constructor queryConstructor = 
queryClass.getConstructor(new Class[] { SearchToken.class, QueryScope.class});
+                    query = (IBasicQuery) queryConstructor.newInstance(new 
Object[] {token, scope} );
+                        
+                }
+                catch (Exception e) {
+                    e.printStackTrace();
+                    throw new SlideRuntimeException (e.getMessage());
+                }
+            }
+            
+            else {
+                query = new BasicQueryEnvelope (token, scope);
+            }
             
         }
         else {

Modified: 
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java
URL: 
http://svn.apache.org/viewcvs/jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java?rev=356263&r1=356262&r2=356263&view=diff
==============================================================================
--- 
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java
 (original)
+++ 
jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java
 Mon Dec 12 06:39:21 2005
@@ -43,6 +43,7 @@
 import org.apache.slide.search.CompareHint;
 import org.apache.slide.search.PropertyProvider;
 import org.apache.slide.search.QueryScope;
+import org.apache.slide.search.RequestedResource;
 import org.apache.slide.search.SearchToken;
 import org.apache.slide.search.SlideUri;
 import org.apache.slide.search.basic.Literals;
@@ -163,7 +164,7 @@
         
         try {
             revisionDescriptors = contentHelper.retrieve (slideToken, 
objectNode.getUri());
-            
+            objectNode.setUri(revisionDescriptors.getUri());
             try {
                 if (revisionNumber == null) {
                     revisionDescriptor = contentHelper.retrieve (slideToken, 
revisionDescriptors);
@@ -183,7 +184,7 @@
             e.fillInStackTrace();
             throw e;
         }
-        
+         
         catch (Exception e) {
             e.printStackTrace();
             throw new SlideException (e.getMessage()); // TODO: clean 
exception handling
@@ -332,6 +333,10 @@
         return getInternalHref();
     }
 
+    public void setUri(String uri) {
+       objectNode.setUri(uri);
+    }
+    
   /**
      * Returns the revision number of the resource.
      *
@@ -694,6 +699,16 @@
         return getUri();
     }
 
+    public Object clone() { 
+               try {
+                       ComparableResourceImpl clone = 
(ComparableResourceImpl)super.clone();
+                       clone.objectNode = objectNode.cloneObject();;
+                       return clone;
+               } catch (CloneNotSupportedException e) {
+                       return null;
+               }
+    }
+    
     /**
      * Dummy Exception to indicate UNKNOWN state
      */



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to