[hibernate-commits] Hibernate SVN: r18505 - in search/trunk: src/main/java/org/hibernate/search/filter and 2 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Mon Jan 11 12:11:03 EST 2010
Author: sannegrinovero
Date: 2010-01-11 12:11:03 -0500 (Mon, 11 Jan 2010)
New Revision: 18505
Removed:
search/trunk/src/main/java/org/hibernate/search/filter/EmptyDocIdBitSet.java
Modified:
search/trunk/pom.xml
search/trunk/src/main/java/org/hibernate/search/filter/AndDocIdSet.java
search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java
search/trunk/src/test/java/org/hibernate/search/test/filter/AndDocIdSetsTest.java
search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilter.java
search/trunk/src/test/java/org/hibernate/search/test/filter/FiltersOptimizationTest.java
search/trunk/src/test/java/org/hibernate/search/test/filter/InstanceBasedExcludeAllFilter.java
Log:
HSEARCH-442 Upgrade existing code to Lucene 2.9.1
Modified: search/trunk/pom.xml
===================================================================
--- search/trunk/pom.xml 2010-01-11 01:20:16 UTC (rev 18504)
+++ search/trunk/pom.xml 2010-01-11 17:11:03 UTC (rev 18505)
@@ -115,7 +115,7 @@
<properties>
<slf4jVersion>1.5.8</slf4jVersion>
- <luceneVersion>2.4.1</luceneVersion>
+ <luceneVersion>2.9.1</luceneVersion>
<hibernateVersion>3.5.0-SNAPSHOT</hibernateVersion>
<hibernateCommonsAnnotationVersion>3.2.0.Beta1</hibernateCommonsAnnotationVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Modified: search/trunk/src/main/java/org/hibernate/search/filter/AndDocIdSet.java
===================================================================
--- search/trunk/src/main/java/org/hibernate/search/filter/AndDocIdSet.java 2010-01-11 01:20:16 UTC (rev 18504)
+++ search/trunk/src/main/java/org/hibernate/search/filter/AndDocIdSet.java 2010-01-11 17:11:03 UTC (rev 18505)
@@ -80,11 +80,11 @@
//iterator initialize, just one "next" for each DocIdSetIterator
for ( ; i<iteratorSize; i++ ) {
final DocIdSetIterator iterator = iterators[i];
- if ( ! iterator.next() ) {
+ final int position = iterator.nextDoc();
+ if ( position==DocIdSetIterator.NO_MORE_DOCS ) {
//current iterator has no values, so skip all
- return EmptyDocIdBitSet.instance;
+ return DocIdSet.EMPTY_DOCIDSET;
}
- final int position = iterator.doc();
if ( targetPosition==position ) {
votes++; //stopped as same position of others
}
@@ -100,15 +100,14 @@
result.fastSet( targetPosition );
targetPosition++;
}
- i=0;
- votes=0; //could be smarted but would make the code even more complex for a minor optimization out of cycle.
+ i = 0;
+ votes = 0; //could be smarter but would make the code even more complex for a minor optimization out of cycle.
// enter main loop:
while ( true ) {
final DocIdSetIterator iterator = iterators[i];
- final boolean validPosition = iterator.skipTo( targetPosition );
- if ( ! validPosition )
+ final int position = iterator.advance( targetPosition );
+ if ( position==DocIdSetIterator.NO_MORE_DOCS )
return result; //exit condition
- final int position = iterator.doc();
if ( position == targetPosition ) {
if ( ++votes == iteratorSize ) {
result.fastSet( position );
@@ -125,40 +124,13 @@
}
@Override
- public DocIdSetIterator iterator() {
- return new AndingDocIdSetIterator();
+ public DocIdSetIterator iterator() throws IOException {
+ return buildBitset().iterator();
}
- private class AndingDocIdSetIterator extends DocIdSetIterator {
-
- private DocIdSetIterator iterator;
-
- @Override
- public int doc() {
- // should never happen when respecting interface contract; otherwise I
- // prefer a NPE than a hard to debug return 0.
- assert iterator != null : "Illegal state, can't be called before next() or skipTo(int)";
- return iterator.doc();
- }
-
- @Override
- public boolean next() throws IOException {
- ensureInitialized(); //can't initialize before as it would not be allowed to throw IOException
- return iterator.next();
- }
-
- @Override
- public boolean skipTo(int target) throws IOException {
- ensureInitialized(); //can't initialize before as it would not be allowed to throw IOException
- return iterator.skipTo( target );
- }
-
- private final void ensureInitialized() throws IOException {
- if ( iterator == null ) {
- iterator = buildBitset().iterator();
- }
- }
-
+ @Override
+ public boolean isCacheable() {
+ return true;
}
}
Deleted: search/trunk/src/main/java/org/hibernate/search/filter/EmptyDocIdBitSet.java
===================================================================
--- search/trunk/src/main/java/org/hibernate/search/filter/EmptyDocIdBitSet.java 2010-01-11 01:20:16 UTC (rev 18504)
+++ search/trunk/src/main/java/org/hibernate/search/filter/EmptyDocIdBitSet.java 2010-01-11 17:11:03 UTC (rev 18505)
@@ -1,78 +0,0 @@
-/* $Id$
- *
- * Hibernate, Relational Persistence for Idiomatic Java
- *
- * Copyright (c) 2009, Red Hat, Inc. and/or its affiliates or third-party contributors as
- * indicated by the @author tags or express copyright attribution
- * statements applied by the authors. All third-party contributions are
- * distributed under license by Red Hat, Inc.
- *
- * This copyrighted material is made available to anyone wishing to use, modify,
- * copy, or redistribute it subject to the terms and conditions of the GNU
- * Lesser General Public License, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this distribution; if not, write to:
- * Free Software Foundation, Inc.
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301 USA
- */
-package org.hibernate.search.filter;
-
-import java.io.Serializable;
-
-import org.apache.lucene.search.DocIdSet;
-import org.apache.lucene.search.DocIdSetIterator;
-
-/**
- * A DocIdSet which is always empty.
- * Stateless and ThreadSafe.
- *
- * @author Sanne Grinovero
- */
-public final class EmptyDocIdBitSet extends DocIdSet implements Serializable {
-
- private static final long serialVersionUID = 6429929383767238322L;
-
- public static final DocIdSet instance = new EmptyDocIdBitSet();
-
- private static final DocIdSetIterator iterator = new EmptyDocIdSetIterator();
-
- private EmptyDocIdBitSet(){
- // is singleton
- }
-
- @Override
- public final DocIdSetIterator iterator() {
- return iterator;
- }
-
- /**
- * implements a DocIdSetIterator for an empty DocIdSet
- * As it is empty it also is stateless and so it can be reused.
- */
- private static final class EmptyDocIdSetIterator extends DocIdSetIterator {
-
- @Override
- public final int doc() {
- throw new IllegalStateException( "Should never be called" );
- }
-
- @Override
- public final boolean next() {
- return false;
- }
-
- @Override
- public final boolean skipTo(int target) {
- return false;
- }
-
- }
-
-}
Modified: search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java 2010-01-11 01:20:16 UTC (rev 18504)
+++ search/trunk/src/test/java/org/hibernate/search/test/FSDirectoryTest.java 2010-01-11 17:11:03 UTC (rev 18505)
@@ -81,9 +81,11 @@
int num = reader.numDocs();
assertEquals( 1, num );
TermDocs docs = reader.termDocs( new Term( "Abstract", "Hibernate" ) );
+ docs.next();
org.apache.lucene.document.Document doc = reader.document( docs.doc() );
assertFalse( docs.next() );
docs = reader.termDocs( new Term( "Title", "Action" ) );
+ docs.next();
doc = reader.document( docs.doc() );
assertFalse( docs.next() );
assertEquals( "1", doc.getField( "id" ).stringValue() );
Modified: search/trunk/src/test/java/org/hibernate/search/test/filter/AndDocIdSetsTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/filter/AndDocIdSetsTest.java 2010-01-11 01:20:16 UTC (rev 18504)
+++ search/trunk/src/test/java/org/hibernate/search/test/filter/AndDocIdSetsTest.java 2010-01-11 17:11:03 UTC (rev 18505)
@@ -97,10 +97,10 @@
public void testIteratorMatchesTestArray() throws IOException {
DocIdSet docIdSet0_9 = arrayToDocIdSet(testDataFrom0to9);
DocIdSetIterator docIdSetIterator = docIdSet0_9.iterator();
- assertTrue( docIdSetIterator.next() );
- assertEquals( 0, docIdSetIterator.doc() );
- assertTrue( docIdSetIterator.skipTo(9) );
- assertFalse( docIdSetIterator.skipTo(10) );
+ assertTrue( docIdSetIterator.nextDoc() != DocIdSetIterator.NO_MORE_DOCS );
+ assertEquals( 0, docIdSetIterator.docID() );
+ assertEquals( 9, docIdSetIterator.advance(9) );
+ assertEquals( DocIdSetIterator.NO_MORE_DOCS, docIdSetIterator.advance(10) );
}
public void testAndDocIdSets() {
@@ -180,13 +180,13 @@
System.out.println(" Results are same: " + docIdSetsEqual( andedByBitsResult, andedByIterationResult ) );
}
- private static int iterateOnResults(DocIdSet docIdBitSet) throws IOException {
+ private static void iterateOnResults(DocIdSet docIdBitSet) throws IOException {
DocIdSetIterator iterator = docIdBitSet.iterator();
- int i = 0;
- while ( iterator.next() ) {
- i += iterator.doc();
+ int currentDoc;
+ do {
+ currentDoc = iterator.nextDoc();
}
- return i;
+ while ( currentDoc != DocIdSetIterator.NO_MORE_DOCS );
}
private static final BitSet applyANDOnBitSets(final List<BitSet> filtersData) {
@@ -237,29 +237,24 @@
}
/**
- * @param a
- * @param b
+ * @param expected
+ * @param tested
* @return true if the two DocIdSet are equal: contain the same number of ids, same order and all are equal
*/
public static final boolean docIdSetsEqual(DocIdSet expected, DocIdSet tested) {
- DocIdSetIterator iterA = expected.iterator();
- DocIdSetIterator iterB = tested.iterator();
- boolean nextA = false;
- boolean nextB = false;
try{
+ DocIdSetIterator iterA = expected.iterator();
+ DocIdSetIterator iterB = tested.iterator();
+ int nextA;
+ int nextB;
do {
- nextA = iterA.next();
- nextB = iterB.next();
- if ( nextA!=nextB ) {
+ nextA = iterA.nextDoc();
+ nextB = iterB.nextDoc();
+ if ( nextA != nextB ) {
return false;
}
- else if ( nextA==false) {
- return true;
- }
- else if ( iterA.doc() != iterB.doc() ) {
- return false;
- }
- } while ( nextA && nextB );
+ assertEquals( iterA.docID(), iterB.docID() );
+ } while ( nextA != DocIdSetIterator.NO_MORE_DOCS );
}
catch (IOException ioe) {
fail( "these DocIdSetIterator instances should not throw any exceptions" );
Modified: search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilter.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilter.java 2010-01-11 01:20:16 UTC (rev 18504)
+++ search/trunk/src/test/java/org/hibernate/search/test/filter/ExcludeAllFilter.java 2010-01-11 17:11:03 UTC (rev 18505)
@@ -31,8 +31,6 @@
import org.apache.lucene.search.Filter;
import org.apache.lucene.index.IndexReader;
-import org.hibernate.search.filter.EmptyDocIdBitSet;
-
/**
* @author Emmanuel Bernard
*/
@@ -58,6 +56,6 @@
throw new IllegalStateException( "Called twice" );
}
done = true;
- return EmptyDocIdBitSet.instance;
+ return DocIdSet.EMPTY_DOCIDSET;
}
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/filter/FiltersOptimizationTest.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/filter/FiltersOptimizationTest.java 2010-01-11 01:20:16 UTC (rev 18504)
+++ search/trunk/src/test/java/org/hibernate/search/test/filter/FiltersOptimizationTest.java 2010-01-11 17:11:03 UTC (rev 18505)
@@ -194,7 +194,7 @@
}
@Override
- public DocIdSetIterator iterator() {
+ public DocIdSetIterator iterator() throws IOException {
return bitSet.iterator();
}
Modified: search/trunk/src/test/java/org/hibernate/search/test/filter/InstanceBasedExcludeAllFilter.java
===================================================================
--- search/trunk/src/test/java/org/hibernate/search/test/filter/InstanceBasedExcludeAllFilter.java 2010-01-11 01:20:16 UTC (rev 18504)
+++ search/trunk/src/test/java/org/hibernate/search/test/filter/InstanceBasedExcludeAllFilter.java 2010-01-11 17:11:03 UTC (rev 18505)
@@ -31,8 +31,6 @@
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.DocIdSet;
-import org.hibernate.search.filter.EmptyDocIdBitSet;
-
/**
* @author Emmanuel Bernard
*/
@@ -55,6 +53,6 @@
throw new IllegalStateException( "Called twice" );
}
done = true;
- return EmptyDocIdBitSet.instance;
+ return DocIdSet.EMPTY_DOCIDSET;
}
}
More information about the hibernate-commits
mailing list