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]