You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2006/12/12 20:12:29 UTC

svn commit: r486281 - in /jackrabbit/trunk/jackrabbit-core: ./ src/main/java/org/apache/jackrabbit/core/query/lucene/ src/main/javacc/fulltext/

Author: jukka
Date: Tue Dec 12 11:12:28 2006
New Revision: 486281

URL: http://svn.apache.org/viewvc?view=rev&rev=486281
Log:
JCR-352: Applied the Lucene 2.0 upgrade patch contributed by Przemo Pakulski.

Modified:
    jackrabbit/trunk/jackrabbit-core/pom.xml
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FSDirectory.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/NodeIndexer.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PersistentIndex.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeScan.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/VolatileIndex.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardTermEnum.java
    jackrabbit/trunk/jackrabbit-core/src/main/javacc/fulltext/QueryParser.jjt

Modified: jackrabbit/trunk/jackrabbit-core/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/pom.xml?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/pom.xml (original)
+++ jackrabbit/trunk/jackrabbit-core/pom.xml Tue Dec 12 11:12:28 2006
@@ -310,9 +310,9 @@
       <version>1.0</version>
     </dependency>
     <dependency>
-      <groupId>lucene</groupId>
-      <artifactId>lucene</artifactId>
-      <version>1.4.3</version>
+      <groupId>org.apache.lucene</groupId>
+      <artifactId>lucene-core</artifactId>
+      <version>2.0.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.derby</groupId>

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java Tue Dec 12 11:12:28 2006
@@ -144,7 +144,7 @@
      * @return number of documents deleted
      */
     int removeDocument(Term idTerm) throws IOException {
-        return getIndexReader().delete(idTerm);
+        return getIndexReader().deleteDocuments(idTerm);
     }
 
     /**
@@ -207,12 +207,13 @@
         }
         if (indexWriter == null) {
             indexWriter = new IndexWriter(getDirectory(), analyzer, false);
-            indexWriter.minMergeDocs = minMergeDocs;
-            indexWriter.maxMergeDocs = maxMergeDocs;
-            indexWriter.mergeFactor = mergeFactor;
-            indexWriter.maxFieldLength = maxFieldLength;
+			// since lucene 2.0 setMaxBuffereDocs is equivalent to previous minMergeDocs attribute
+			indexWriter.setMaxBufferedDocs(minMergeDocs);
+            indexWriter.setMaxMergeDocs(maxMergeDocs);
+            indexWriter.setMergeFactor(mergeFactor);
+            indexWriter.setMaxFieldLength(maxFieldLength);
             indexWriter.setUseCompoundFile(useCompoundFile);
-            indexWriter.infoStream = STREAM_LOGGER;
+            indexWriter.setInfoStream(STREAM_LOGGER);
         }
         return indexWriter;
     }
@@ -322,7 +323,8 @@
     void setMinMergeDocs(int minMergeDocs) {
         this.minMergeDocs = minMergeDocs;
         if (indexWriter != null) {
-            indexWriter.minMergeDocs = minMergeDocs;
+			// since lucene 2.0 setMaxBuffereDocs is equivalent to previous minMergeDocs attribute
+			indexWriter.setMaxBufferedDocs(minMergeDocs);
         }
     }
 
@@ -332,7 +334,7 @@
     void setMaxMergeDocs(int maxMergeDocs) {
         this.maxMergeDocs = maxMergeDocs;
         if (indexWriter != null) {
-            indexWriter.maxMergeDocs = maxMergeDocs;
+            indexWriter.setMaxMergeDocs(maxMergeDocs);
         }
     }
 
@@ -342,7 +344,7 @@
     void setMergeFactor(int mergeFactor) {
         this.mergeFactor = mergeFactor;
         if (indexWriter != null) {
-            indexWriter.mergeFactor = mergeFactor;
+            indexWriter.setMergeFactor(mergeFactor);
         }
     }
 
@@ -352,7 +354,7 @@
     void setMaxFieldLength(int maxFieldLength) {
         this.maxFieldLength = maxFieldLength;
         if (indexWriter != null) {
-            indexWriter.maxFieldLength = maxFieldLength;
+            indexWriter.setMaxFieldLength(maxFieldLength);
         }
     }
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java Tue Dec 12 11:12:28 2006
@@ -190,7 +190,7 @@
             return true;
         }
 
-        protected float difference() {
+        public float difference() {
             return 1.0f;
         }
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FSDirectory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FSDirectory.java?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FSDirectory.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FSDirectory.java Tue Dec 12 11:12:28 2006
@@ -19,8 +19,8 @@
 import org.apache.lucene.util.Constants;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.Lock;
-import org.apache.lucene.store.OutputStream;
-import org.apache.lucene.store.InputStream;
+import org.apache.lucene.store.IndexOutput;
+import org.apache.lucene.store.IndexInput;
 
 import java.io.IOException;
 import java.io.File;
@@ -156,9 +156,9 @@
     /**
      * @inheritDoc
      */
-    public OutputStream createFile(String name)
+    public IndexOutput createOutput(String name)
             throws IOException {
-        return delegatee.createFile(name);
+        return delegatee.createOutput(name);
     }
 
     /**
@@ -204,9 +204,9 @@
     /**
      * @inheritDoc
      */
-    public InputStream openFile(String name)
+    public IndexInput openInput(String name)
             throws IOException {
-        return delegatee.openFile(name);
+        return delegatee.openInput(name);
     }
 
     /**

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?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- 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 Dec 12 11:12:28 2006
@@ -55,6 +55,7 @@
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.BooleanClause.Occur;
 
 import javax.jcr.NamespaceException;
 import javax.jcr.PropertyType;
@@ -204,7 +205,7 @@
         Object[] result = node.acceptOperands(this, null);
         for (int i = 0; i < result.length; i++) {
             Query operand = (Query) result[i];
-            orQuery.add(operand, false, false);
+            orQuery.add(operand, Occur.SHOULD);
         }
         return orQuery;
     }
@@ -217,7 +218,7 @@
         BooleanQuery andQuery = new BooleanQuery();
         for (int i = 0; i < result.length; i++) {
             Query operand = (Query) result[i];
-            andQuery.add(operand, true, false);
+            andQuery.add(operand, Occur.MUST);
         }
         return andQuery;
     }
@@ -230,7 +231,7 @@
         // join the results
         BooleanQuery b = new BooleanQuery();
         for (int i = 0; i < result.length; i++) {
-            b.add((Query) result[i], false, false);
+            b.add((Query) result[i], Occur.SHOULD);
         }
         // negate
         return new NotQuery(b);
@@ -311,7 +312,7 @@
         } else {
             BooleanQuery b = new BooleanQuery();
             for (Iterator it = terms.iterator(); it.hasNext();) {
-                b.add(new TermQuery((Term) it.next()), false, false);
+                b.add(new TermQuery((Term) it.next()), Occur.SHOULD);
             }
             return b;
         }
@@ -383,8 +384,8 @@
                                 || (!node.getReferencesProperty() && i == elements.length - 1))) {
                         Query q = new TermQuery(new Term(FieldNames.LABEL, name));
                         BooleanQuery and = new BooleanQuery();
-                        and.add(q, true, false);
-                        and.add(context, true, false);
+                        and.add(q, Occur.MUST);
+                        and.add(context, Occur.MUST);
                         context = and;
                     } else if ((node.getReferencesProperty() && i < elements.length - 2)
                             || (!node.getReferencesProperty() && i < elements.length - 1)) {
@@ -429,8 +430,8 @@
                         exceptions.add(e);
                     }
                     BooleanQuery and = new BooleanQuery();
-                    and.add(new TermQuery(new Term(FieldNames.PARENT, "")), true, false);
-                    and.add(new TermQuery(new Term(FieldNames.LABEL, name)), true, false);
+                    and.add(new TermQuery(new Term(FieldNames.PARENT, "")), Occur.MUST);
+                    and.add(new TermQuery(new Term(FieldNames.LABEL, name)), Occur.MUST);
                     context = and;
                 }
                 LocationStepQueryNode[] tmp = new LocationStepQueryNode[steps.length - 1];
@@ -451,7 +452,7 @@
         if (data instanceof BooleanQuery) {
             BooleanQuery constraint = (BooleanQuery) data;
             if (constraint.getClauses().length > 0) {
-                constraint.add(context, true, false);
+                constraint.add(context, Occur.MUST);
                 context = constraint;
             }
         }
@@ -469,7 +470,7 @@
         // predicate on step?
         Object[] predicates = node.acceptOperands(this, data);
         for (int i = 0; i < predicates.length; i++) {
-            andQuery.add((Query) predicates[i], true, false);
+            andQuery.add((Query) predicates[i], Occur.MUST);
         }
 
         // check for position predicate
@@ -496,7 +497,7 @@
 
         if (node.getIncludeDescendants()) {
             if (nameTest != null) {
-                andQuery.add(new DescendantSelfAxisQuery(context, nameTest), true, false);
+                andQuery.add(new DescendantSelfAxisQuery(context, nameTest), Occur.MUST);
             } else {
                 // descendant-or-self with nametest=*
                 if (predicates.length > 0) {
@@ -509,7 +510,7 @@
                     if (pathNode.getPathSteps()[0] != node) {
                         Query subQuery = new DescendantSelfAxisQuery(context, andQuery, false);
                         andQuery = new BooleanQuery();
-                        andQuery.add(subQuery, true, false);
+                        andQuery.add(subQuery, Occur.MUST);
                     }
                 } else {
                     // todo this will traverse the whole index, optimize!
@@ -523,19 +524,19 @@
                     PathQueryNode pathNode = (PathQueryNode) node.getParent();
                     if (pathNode.getPathSteps()[0] != node) {
                         context = new DescendantSelfAxisQuery(context, subQuery);
-                        andQuery.add(new ChildAxisQuery(sharedItemMgr, context, null, node.getIndex()), true, false);
+                        andQuery.add(new ChildAxisQuery(sharedItemMgr, context, null, node.getIndex()), Occur.MUST);
                     } else {
-                        andQuery.add(subQuery, true, false);
+                        andQuery.add(subQuery, Occur.MUST);
                     }
                 }
             }
         } else {
             // name test
             if (nameTest != null) {
-                andQuery.add(new ChildAxisQuery(sharedItemMgr, context, nameTest.getTerm().text(), node.getIndex()), true, false);
+                andQuery.add(new ChildAxisQuery(sharedItemMgr, context, nameTest.getTerm().text(), node.getIndex()), Occur.MUST);
             } else {
                 // select child nodes
-                andQuery.add(new ChildAxisQuery(sharedItemMgr, context, null, node.getIndex()), true, false);
+                andQuery.add(new ChildAxisQuery(sharedItemMgr, context, null, node.getIndex()), Occur.MUST);
             }
         }
 
@@ -567,9 +568,9 @@
             if (predicates.length > 0) {
                 BooleanQuery andQuery = new BooleanQuery();
                 for (int i = 0; i < predicates.length; i++) {
-                    andQuery.add((Query) predicates[i], true, false);
+                    andQuery.add((Query) predicates[i], Occur.MUST);
                 }
-                andQuery.add(context, true, false);
+                andQuery.add(context, Occur.MUST);
                 context = andQuery;
             }
 
@@ -659,7 +660,7 @@
                     } else {
                         q = new TermQuery(t);
                     }
-                    or.add(q, false, false);
+                    or.add(q, Occur.SHOULD);
                 }
                 query = or;
                 if (node.getOperation() == QueryConstants.OPERATION_EQ_VALUE) {
@@ -672,7 +673,7 @@
                 for (int i = 0; i < stringValues.length; i++) {
                     Term lower = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, stringValues[i]));
                     Term upper = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, "\uFFFF"));
-                    or.add(new RangeQuery(lower, upper, true, transform[0]), false, false);
+                    or.add(new RangeQuery(lower, upper, true, transform[0]), Occur.SHOULD);
                 }
                 query = or;
                 if (node.getOperation() == QueryConstants.OPERATION_GE_VALUE) {
@@ -685,7 +686,7 @@
                 for (int i = 0; i < stringValues.length; i++) {
                     Term lower = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, stringValues[i]));
                     Term upper = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, "\uFFFF"));
-                    or.add(new RangeQuery(lower, upper, false, transform[0]), false, false);
+                    or.add(new RangeQuery(lower, upper, false, transform[0]), Occur.SHOULD);
                 }
                 query = or;
                 if (node.getOperation() == QueryConstants.OPERATION_GT_VALUE) {
@@ -698,7 +699,7 @@
                 for (int i = 0; i < stringValues.length; i++) {
                     Term lower = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, ""));
                     Term upper = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, stringValues[i]));
-                    or.add(new RangeQuery(lower, upper, true, transform[0]), false, false);
+                    or.add(new RangeQuery(lower, upper, true, transform[0]), Occur.SHOULD);
                 }
                 query = or;
                 if (node.getOperation() == QueryConstants.OPERATION_LE_VALUE) {
@@ -720,7 +721,7 @@
                 for (int i = 0; i < stringValues.length; i++) {
                     Term lower = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, ""));
                     Term upper = new Term(FieldNames.PROPERTIES, FieldNames.createNamedValue(field, stringValues[i]));
-                    or.add(new RangeQuery(lower, upper, false, transform[0]), false, false);
+                    or.add(new RangeQuery(lower, upper, false, transform[0]), Occur.SHOULD);
                 }
                 query = or;
                 if (node.getOperation() == QueryConstants.OPERATION_LT_VALUE) {
@@ -730,7 +731,7 @@
             case QueryConstants.OPERATION_NE_VALUE:      // !=
                 // match nodes with property 'field' that includes svp and mvp
                 BooleanQuery notQuery = new BooleanQuery();
-                notQuery.add(new MatchAllQuery(field), false, false);
+                notQuery.add(new MatchAllQuery(field), 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]));
@@ -742,10 +743,10 @@
                     } else {
                         q = new TermQuery(t);
                     }
-                    notQuery.add(q, false, true);
+                    notQuery.add(q, Occur.MUST_NOT);
                 }
                 // and exclude all nodes where 'field' is multi valued
-                notQuery.add(new TermQuery(new Term(FieldNames.MVP, field)), false, true);
+                notQuery.add(new TermQuery(new Term(FieldNames.MVP, field)), Occur.MUST_NOT);
                 query = notQuery;
                 break;
             case QueryConstants.OPERATION_NE_GENERAL:    // !=
@@ -756,7 +757,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(new MatchAllQuery(field), false, false);
+                notQuery.add(new MatchAllQuery(field), 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]));
@@ -770,9 +771,9 @@
                     } else {
                         q = new TermQuery(t);
                     }
-                    and.add(q, true, false);
-                    and.add(svp, true, false);
-                    notQuery.add(and, false, true);
+                    and.add(q, Occur.MUST);
+                    and.add(svp, Occur.MUST);
+                    notQuery.add(and, Occur.MUST_NOT);
                 }
                 // todo above also excludes multi-valued properties that contain
                 //      multiple instances of only stringValues. e.g. text={foo, foo}
@@ -805,8 +806,8 @@
                         if (name != null) {
                             Query nameTest = new TermQuery(new Term(FieldNames.LABEL, name));
                             BooleanQuery and = new BooleanQuery();
-                            and.add(query, true, false);
-                            and.add(nameTest, true, false);
+                            and.add(query, Occur.MUST);
+                            and.add(nameTest, Occur.MUST);
                             query = and;
                         } else {
                             // otherwise the query can be used as is
@@ -855,8 +856,8 @@
         // only contains a single value. This works because q already restricts
         // the result to those nodes that have a property propName
         BooleanQuery and = new BooleanQuery();
-        and.add(q, true, false);
-        and.add(svp, true, false);
+        and.add(q, Occur.MUST);
+        and.add(svp, Occur.MUST);
         return and;
     }
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java Tue Dec 12 11:12:28 2006
@@ -127,19 +127,19 @@
 
         // special fields
         // UUID
-        doc.add(new Field(FieldNames.UUID, node.getNodeId().getUUID().toString(), true, true, false));
+        doc.add(new Field(FieldNames.UUID, node.getNodeId().getUUID().toString(), Field.Store.YES, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
         try {
             // parent UUID
             if (node.getParentId() == null) {
                 // root node
-                doc.add(new Field(FieldNames.PARENT, "", true, true, false));
-                doc.add(new Field(FieldNames.LABEL, "", false, true, false));
+                doc.add(new Field(FieldNames.PARENT, "", Field.Store.YES, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
+                doc.add(new Field(FieldNames.LABEL, "", Field.Store.NO, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
             } else {
-                doc.add(new Field(FieldNames.PARENT, node.getParentId().toString(), true, true, false));
+                doc.add(new Field(FieldNames.PARENT, node.getParentId().toString(), Field.Store.YES, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
                 NodeState parent = (NodeState) stateProvider.getItemState(node.getParentId());
                 NodeState.ChildNodeEntry child = parent.getChildNodeEntry(node.getNodeId());
                 String name = NameFormat.format(child.getName(), mappings);
-                doc.add(new Field(FieldNames.LABEL, name, false, true, false));
+                doc.add(new Field(FieldNames.LABEL, name, Field.Store.NO, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
             }
         } catch (NoSuchItemStateException e) {
             throwRepositoryException(e);
@@ -196,7 +196,7 @@
     private void addMVPName(Document doc, QName name) {
         try {
             String propName = NameFormat.format(name, mappings);
-            doc.add(new Field(FieldNames.MVP, propName, false, true, false));
+            doc.add(new Field(FieldNames.MVP, propName, Field.Store.NO, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
         } catch (NoPrefixDeclaredException e) {
             // will never happen, prefixes are created dynamically
         }
@@ -299,7 +299,7 @@
                 for (Iterator it = fields.keySet().iterator(); it.hasNext();) {
                     String field = (String) it.next();
                     Reader r = (Reader) fields.get(field);
-                    doc.add(Field.Text(field, r));
+                    doc.add(new Field(field, r));
                 }
             }
         } catch (Exception e) {
@@ -320,9 +320,9 @@
     protected void addBooleanValue(Document doc, String fieldName, Object internalValue) {
         doc.add(new Field(FieldNames.PROPERTIES,
                 FieldNames.createNamedValue(fieldName, internalValue.toString()),
-                false,
-                true,
-                false));
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED,
+                Field.TermVector.NO));
     }
 
     /**
@@ -338,9 +338,9 @@
         long millis = ((Calendar) internalValue).getTimeInMillis();
         doc.add(new Field(FieldNames.PROPERTIES,
                 FieldNames.createNamedValue(fieldName, DateField.timeToString(millis)),
-                false,
-                true,
-                false));
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED,
+                Field.TermVector.NO));
     }
 
     /**
@@ -356,9 +356,9 @@
         double doubleVal = ((Double) internalValue).doubleValue();
         doc.add(new Field(FieldNames.PROPERTIES,
                 FieldNames.createNamedValue(fieldName, DoubleField.doubleToString(doubleVal)),
-                false,
-                true,
-                false));
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED,
+                Field.TermVector.NO));
     }
 
     /**
@@ -374,9 +374,9 @@
         long longVal = ((Long) internalValue).longValue();
         doc.add(new Field(FieldNames.PROPERTIES,
                 FieldNames.createNamedValue(fieldName, LongField.longToString(longVal)),
-                false,
-                true,
-                false));
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED,
+                Field.TermVector.NO));
     }
 
     /**
@@ -392,9 +392,9 @@
         String uuid = internalValue.toString();
         doc.add(new Field(FieldNames.PROPERTIES,
                 FieldNames.createNamedValue(fieldName, uuid),
-                true, // store
-                true,
-                false));
+                Field.Store.YES, // store
+                Field.Index.UN_TOKENIZED,
+                Field.TermVector.NO));
     }
 
     /**
@@ -416,9 +416,9 @@
         }
         doc.add(new Field(FieldNames.PROPERTIES,
                 FieldNames.createNamedValue(fieldName, pathString),
-                false,
-                true,
-                false));
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED,
+                Field.TermVector.NO));
     }
 
     /**
@@ -435,23 +435,23 @@
         // simple String
         doc.add(new Field(FieldNames.PROPERTIES,
                 FieldNames.createNamedValue(fieldName, stringValue),
-                false,
-                true,
-                false));
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED,
+                Field.TermVector.NO));
         // also create fulltext index of this value
         doc.add(new Field(FieldNames.FULLTEXT,
                 stringValue,
-                false,
-                true,
-                true));
+                Field.Store.NO,
+                Field.Index.TOKENIZED,
+                Field.TermVector.NO));
         // create fulltext index on property
         int idx = fieldName.indexOf(':');
         fieldName = fieldName.substring(0, idx + 1)
                 + FieldNames.FULLTEXT_PREFIX + fieldName.substring(idx + 1);
         doc.add(new Field(fieldName, stringValue,
-                false,
-                true,
-                true));
+                Field.Store.NO,
+                Field.Index.TOKENIZED,
+                Field.TermVector.NO));
     }
 
     /**
@@ -475,8 +475,8 @@
         }
         doc.add(new Field(FieldNames.PROPERTIES,
                 FieldNames.createNamedValue(fieldName, normValue),
-                false,
-                true,
-                false));
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED,
+                Field.TermVector.NO));
     }
 }

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PersistentIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PersistentIndex.java?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PersistentIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PersistentIndex.java Tue Dec 12 11:12:28 2006
@@ -23,8 +23,8 @@
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.InputStream;
-import org.apache.lucene.store.OutputStream;
+import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.store.IndexOutput;
 
 import java.io.IOException;
 import java.io.File;
@@ -166,9 +166,9 @@
         Directory dest = getDirectory();
         String[] files = dir.list();
         for (int i = 0; i < files.length; i++) {
-            InputStream in = dir.openFile(files[i]);
+            IndexInput in = dir.openInput(files[i]);
             try {
-                OutputStream out = dest.createFile(files[i]);
+                IndexOutput out = dest.createOutput(files[i]);
                 try {
                     long remaining = in.length();
                     while (remaining > 0) {

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeScan.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeScan.java?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeScan.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeScan.java Tue Dec 12 11:12:28 2006
@@ -50,7 +50,7 @@
         return compare <= 0;
     }
 
-    protected float difference() {
+    public float difference() {
         return 1.0f;
     }
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/VolatileIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/VolatileIndex.java?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/VolatileIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/VolatileIndex.java Tue Dec 12 11:12:28 2006
@@ -108,7 +108,7 @@
             num = 1;
         } else {
             // remove document from index
-            num = super.getIndexReader().delete(idTerm);
+            num = super.getIndexReader().deleteDocuments(idTerm);
         }
         numDocs -= num;
         return num;

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardTermEnum.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardTermEnum.java?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardTermEnum.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardTermEnum.java Tue Dec 12 11:12:28 2006
@@ -135,7 +135,7 @@
     /**
      * @inheritDoc
      */
-    protected float difference() {
+    public float difference() {
         return 1.0f;
     }
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/javacc/fulltext/QueryParser.jjt
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/javacc/fulltext/QueryParser.jjt?view=diff&rev=486281&r1=486280&r2=486281
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/javacc/fulltext/QueryParser.jjt (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/javacc/fulltext/QueryParser.jjt Tue Dec 12 11:12:28 2006
@@ -233,8 +233,8 @@
     // unless it's already prohibited
     if (clauses.size() > 0 && conj == CONJ_AND) {
       BooleanClause c = (BooleanClause) clauses.elementAt(clauses.size()-1);
-      if (!c.prohibited)
-        c.required = true;
+      if (!c.isProhibited())
+        c.setOccur(BooleanClause.Occur.MUST);
     }
 
     if (clauses.size() > 0 && operator == DEFAULT_OPERATOR_AND && conj == CONJ_OR) {
@@ -243,8 +243,8 @@
       // notice if the input is a OR b, first term is parsed as required; without
       // this modification a OR b would parsed as +a OR b
       BooleanClause c = (BooleanClause) clauses.elementAt(clauses.size()-1);
-      if (!c.prohibited)
-        c.required = false;
+      if (!c.isProhibited())
+        c.setOccur(BooleanClause.Occur.SHOULD);
     }
 
     // We might have been passed a null query; the term might have been
@@ -266,7 +266,15 @@
       prohibited = (mods == MOD_NOT);
       required   = (!prohibited && conj != CONJ_OR);
     }
-    clauses.addElement(new BooleanClause(q, required, prohibited));
+    BooleanClause.Occur occur = null;
+    if (required) {
+    	occur = BooleanClause.Occur.MUST;
+    } else if (prohibited) {
+    	occur = BooleanClause.Occur.MUST_NOT;
+    } else {
+    	occur = BooleanClause.Occur.SHOULD;
+    }
+    clauses.addElement(new BooleanClause(q, occur));
   }
   
   /**