You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2008/04/01 16:16:55 UTC
svn commit: r643414 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene:
JQOM2LuceneQueryBuilder.java LuceneQueryBuilder.java Util.java
Author: mreutegg
Date: Tue Apr 1 07:16:43 2008
New Revision: 643414
URL: http://svn.apache.org/viewvc?rev=643414&view=rev
Log:
JCR-1104: JSR 283 support
- query (work in progress)
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JQOM2LuceneQueryBuilder.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JQOM2LuceneQueryBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JQOM2LuceneQueryBuilder.java?rev=643414&r1=643413&r2=643414&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JQOM2LuceneQueryBuilder.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JQOM2LuceneQueryBuilder.java Tue Apr 1 07:16:43 2008
@@ -517,7 +517,7 @@
public Object visit(PropertyExistenceImpl node, Object data) throws Exception {
String propName = npResolver.getJCRName(node.getPropertyQName());
- return createMatchAllQuery(propName);
+ return Util.createMatchAllQuery(propName, version);
}
public Object visit(PropertyValueImpl node, Object data) throws Exception {
@@ -774,22 +774,6 @@
throw new InvalidQueryException(
"lower/upper-case not supported on operand "
+ operand.getClass().getName());
- }
- }
-
- /**
- * Depending on the index format this method returns
- * a query that matches all nodes that have a property named 'field'
- *
- * @param field
- * @return Query that matches all nodes that have a property named 'field'
- */
- private Query createMatchAllQuery(String field) {
- if (version.getVersion() >= IndexFormatVersion.V2.getVersion()) {
- // new index format style
- return new TermQuery(new Term(FieldNames.PROPERTIES_SET, field));
- } else {
- return new MatchAllQuery(field);
}
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java?rev=643414&r1=643413&r2=643414&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java Tue Apr 1 07:16:43 2008
@@ -598,7 +598,7 @@
}
if (node.getIncludeDescendants()) {
- Query refPropQuery = createMatchAllQuery(refProperty);
+ Query refPropQuery = Util.createMatchAllQuery(refProperty, indexFormatVersion);
context = new DescendantSelfAxisQuery(context, refPropQuery, false);
}
@@ -806,7 +806,7 @@
// the like operation always has one string value.
// no coercing, see above
if (stringValues[0].equals("%")) {
- query = createMatchAllQuery(field);
+ query = Util.createMatchAllQuery(field, indexFormatVersion);
} else {
query = new WildcardQuery(FieldNames.PROPERTIES, field, stringValues[0], transform[0]);
}
@@ -827,7 +827,7 @@
case QueryConstants.OPERATION_NE_VALUE: // !=
// match nodes with property 'field' that includes svp and mvp
BooleanQuery notQuery = new BooleanQuery();
- notQuery.add(createMatchAllQuery(field), Occur.SHOULD);
+ notQuery.add(Util.createMatchAllQuery(field, indexFormatVersion), Occur.SHOULD);
// exclude all nodes where 'field' has the term in question
for (int i = 0; i < stringValues.length; i++) {
Term t = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, stringValues[i]));
@@ -853,7 +853,7 @@
// minus the nodes that have a multi-valued property 'field' and
// all values are equal to term in question
notQuery = new BooleanQuery();
- notQuery.add(createMatchAllQuery(field), Occur.SHOULD);
+ notQuery.add(Util.createMatchAllQuery(field, indexFormatVersion), Occur.SHOULD);
for (int i = 0; i < stringValues.length; i++) {
// exclude the nodes that have the term and are single valued
Term t = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, stringValues[i]));
@@ -876,7 +876,7 @@
query = notQuery;
break;
case QueryConstants.OPERATION_NULL:
- query = new NotQuery(createMatchAllQuery(field));
+ query = new NotQuery(Util.createMatchAllQuery(field, indexFormatVersion));
break;
case QueryConstants.OPERATION_SIMILAR:
String uuid = "x";
@@ -891,10 +891,10 @@
query = new SimilarityQuery(uuid, analyzer);
break;
case QueryConstants.OPERATION_NOT_NULL:
- query = createMatchAllQuery(field);
+ query = Util.createMatchAllQuery(field, indexFormatVersion);
break;
case QueryConstants.OPERATION_SPELLCHECK:
- query = createMatchAllQuery(field);
+ query = Util.createMatchAllQuery(field, indexFormatVersion);
break;
default:
throw new IllegalArgumentException("Unknown relation operation: "
@@ -1104,21 +1104,5 @@
log.debug("Using literal " + literal + " as is.");
}
return (String[]) values.toArray(new String[values.size()]);
- }
-
- /**
- * Depending on the index format this method returns
- * a query that matches all nodes that have a property named 'field'
- *
- * @param field
- * @return Query that matches all nodes that have a property named 'field'
- */
- private Query createMatchAllQuery(String field) {
- if (indexFormatVersion.getVersion() >= IndexFormatVersion.V2.getVersion()) {
- // new index format style
- return new TermQuery(new Term(FieldNames.PROPERTIES_SET, field));
- } else {
- return new MatchAllQuery(field);
- }
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java?rev=643414&r1=643413&r2=643414&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java Tue Apr 1 07:16:43 2008
@@ -18,6 +18,9 @@
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.index.Term;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
@@ -74,5 +77,23 @@
}
}
return true;
+ }
+
+ /**
+ * Depending on the index format this method returns a query that matches
+ * all nodes that have a property with a given <code>name</code>.
+ *
+ * @param name the property name.
+ * @param version the index format version.
+ * @return Query that matches all nodes that have a property with the given
+ * <code>name</code>.
+ */
+ public static Query createMatchAllQuery(String name, IndexFormatVersion version) {
+ if (version.getVersion() >= IndexFormatVersion.V2.getVersion()) {
+ // new index format style
+ return new TermQuery(new Term(FieldNames.PROPERTIES_SET, name));
+ } else {
+ return new MatchAllQuery(name);
+ }
}
}