You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2013/04/10 18:28:11 UTC
svn commit: r1466550 - in /lucene/dev/branches/branch_4x: ./ lucene/
lucene/core/ lucene/core/src/java/org/apache/lucene/search/ lucene/facet/
lucene/facet/src/java/org/apache/lucene/facet/search/
lucene/facet/src/java/org/apache/lucene/facet/taxonomy/...
Author: mikemccand
Date: Wed Apr 10 16:28:10 2013
New Revision: 1466550
URL: http://svn.apache.org/r1466550
Log:
LUCENE-3786: add SearcherTaxonomyManager
Added:
lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/SearcherTaxonomyManager.java
- copied unchanged from r1466548, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/search/SearcherTaxonomyManager.java
lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/search/TestSearcherTaxonomyManager.java
- copied unchanged from r1466548, lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/search/TestSearcherTaxonomyManager.java
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_4x/lucene/core/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/SearcherManager.java
lucene/dev/branches/branch_4x/lucene/facet/ (props changed)
lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/FastCountingFacetsAggregator.java
lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/TaxonomyReader.java
lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyReader.java
lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java
lucene/dev/branches/branch_4x/lucene/test-framework/ (props changed)
lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/search/ShardSearchingTestBase.java
Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1466550&r1=1466549&r2=1466550&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Wed Apr 10 16:28:10 2013
@@ -152,6 +152,10 @@ New Features
* LUCENE-4904: Added descending sort order to NumericDocValuesSorter. (Shai Erera)
+* LUCENE-3786: Added SearcherTaxonomyManager, to manage access to both
+ IndexSearcher and DirectoryTaxonomyReader for near-real-time
+ faceting. (Shai Erera, Mike McCandless)
+
Optimizations
* LUCENE-4839: SorterTemplate.merge can now be overridden in order to replace
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java?rev=1466550&r1=1466549&r2=1466550&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java Wed Apr 10 16:28:10 2013
@@ -81,7 +81,7 @@ public abstract class ReferenceManager<G
* the operation was successful.
* @throws AlreadyClosedException if the reference manager has been {@link #close() closed}.
*/
- protected abstract boolean tryIncRef(G reference);
+ protected abstract boolean tryIncRef(G reference) throws IOException;
/**
* Obtain the current reference. You must match every call to acquire with one
@@ -90,7 +90,7 @@ public abstract class ReferenceManager<G
* released.
* @throws AlreadyClosedException if the reference manager has been {@link #close() closed}.
*/
- public final G acquire() {
+ public final G acquire() throws IOException {
G ref;
do {
if ((ref = current) == null) {
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/SearcherManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/SearcherManager.java?rev=1466550&r1=1466549&r2=1466550&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/SearcherManager.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/SearcherManager.java Wed Apr 10 16:28:10 2013
@@ -144,8 +144,11 @@ public final class SearcherManager exten
}
}
- // NOTE: decRefs incoming reader on throwing an exception
- static IndexSearcher getSearcher(SearcherFactory searcherFactory, IndexReader reader) throws IOException {
+ /** Expert: creates a searcher from the provided {@link
+ * IndexReader} using the provided {@link
+ * SearcherFactory}. NOTE: this decRefs incoming reader
+ * on throwing an exception. */
+ public static IndexSearcher getSearcher(SearcherFactory searcherFactory, IndexReader reader) throws IOException {
boolean success = false;
final IndexSearcher searcher;
try {
Modified: lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/FastCountingFacetsAggregator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/FastCountingFacetsAggregator.java?rev=1466550&r1=1466549&r2=1466550&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/FastCountingFacetsAggregator.java (original)
+++ lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/FastCountingFacetsAggregator.java Wed Apr 10 16:28:10 2013
@@ -83,6 +83,7 @@ public final class FastCountingFacetsAgg
byte b = buf.bytes[offset++];
if (b >= 0) {
prev = ord = ((ord << 7) | b) + prev;
+ assert ord < counts.length: "ord=" + ord + " vs maxOrd=" + counts.length;
++counts[ord];
ord = 0;
} else {
Modified: lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/TaxonomyReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/TaxonomyReader.java?rev=1466550&r1=1466549&r2=1466550&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/TaxonomyReader.java (original)
+++ lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/TaxonomyReader.java Wed Apr 10 16:28:10 2013
@@ -246,4 +246,16 @@ public abstract class TaxonomyReader imp
refCount.incrementAndGet();
}
+ /** Expert: increments the refCount of this TaxonomyReader
+ * instance only if it has not been closed yet. Returns
+ * true on success. */
+ public final boolean tryIncRef() {
+ int count;
+ while ((count = refCount.get()) > 0) {
+ if (refCount.compareAndSet(count, count+1)) {
+ return true;
+ }
+ }
+ return false;
+ }
}
Modified: lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyReader.java?rev=1466550&r1=1466549&r2=1466550&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyReader.java (original)
+++ lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyReader.java Wed Apr 10 16:28:10 2013
@@ -10,7 +10,7 @@ import org.apache.lucene.facet.collectio
import org.apache.lucene.facet.taxonomy.CategoryPath;
import org.apache.lucene.facet.taxonomy.ParallelTaxonomyArrays;
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
-import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.CorruptIndexException; // javadocs
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.DocsEnum;
import org.apache.lucene.index.IndexWriter;
Modified: lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java?rev=1466550&r1=1466549&r2=1466550&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java (original)
+++ lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java Wed Apr 10 16:28:10 2013
@@ -29,7 +29,7 @@ import org.apache.lucene.facet.taxonomy.
import org.apache.lucene.facet.taxonomy.writercache.lru.LruTaxonomyWriterCache;
import org.apache.lucene.index.AtomicReader;
import org.apache.lucene.index.AtomicReaderContext;
-import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.CorruptIndexException; // javadocs
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.DocsEnum;
import org.apache.lucene.index.IndexReader;
@@ -44,7 +44,7 @@ import org.apache.lucene.index.TermsEnum
import org.apache.lucene.index.TieredMergePolicy;
import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.LockObtainFailedException;
+import org.apache.lucene.store.LockObtainFailedException; // javadocs
import org.apache.lucene.store.NativeFSLockFactory;
import org.apache.lucene.store.SimpleFSLockFactory;
import org.apache.lucene.util.BytesRef;
@@ -992,9 +992,12 @@ public class DirectoryTaxonomyWriter imp
return indexWriter;
}
- /** Used by {@link DirectoryTaxonomyReader} to support NRT. */
- final long getTaxonomyEpoch() {
+ /** Expert: returns current index epoch, if this is a
+ * near-real-time reader. Used by {@link
+ * DirectoryTaxonomyReader} to support NRT.
+ *
+ * @lucene.internal */
+ public final long getTaxonomyEpoch() {
return indexEpoch;
}
-
}
Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/search/ShardSearchingTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/search/ShardSearchingTestBase.java?rev=1466550&r1=1466549&r2=1466550&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/search/ShardSearchingTestBase.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/search/ShardSearchingTestBase.java Wed Apr 10 16:28:10 2013
@@ -448,7 +448,7 @@ public abstract class ShardSearchingTest
currentNodeVersions = new long[numNodes];
}
- public void initSearcher(long[] nodeVersions) {
+ public void initSearcher(long[] nodeVersions) throws IOException {
assert currentShardSearcher == null;
System.arraycopy(nodeVersions, 0, currentNodeVersions, 0, currentNodeVersions.length);
currentShardSearcher = new ShardIndexSearcher(currentNodeVersions.clone(),