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 2012/08/15 14:22:07 UTC
svn commit: r1373365 [1/3] - in /lucene/dev/branches/pforcodec_3892: ./
lucene/ lucene/analysis/ lucene/analysis/common/
lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/
lucene/analysis/common/src/test/org/apache/lucene/analysis/cor...
Author: mikemccand
Date: Wed Aug 15 12:22:02 2012
New Revision: 1373365
URL: http://svn.apache.org/viewvc?rev=1373365&view=rev
Log:
LUCENE-3892: merge trunk take 2
Added:
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MergedIterator.java
- copied unchanged from r1373363, lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/MergedIterator.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/store/TestMockDirectoryWrapper.java
- copied unchanged from r1373363, lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/store/TestMockDirectoryWrapper.java
lucene/dev/branches/pforcodec_3892/lucene/facet/src/java/org/apache/lucene/facet/index/OrdinalMappingAtomicReader.java
- copied unchanged from r1373363, lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/index/OrdinalMappingAtomicReader.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/update/processor/CountFieldValuesUpdateProcessorFactory.java
- copied unchanged from r1373363, lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/CountFieldValuesUpdateProcessorFactory.java
lucene/dev/branches/pforcodec_3892/solr/solrj/src/java/org/apache/solr/common/cloud/ClosableThread.java
- copied unchanged from r1373363, lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/cloud/ClosableThread.java
Removed:
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/PayloadProcessorProvider.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/util/MergedIterator.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestPayloadProcessorProvider.java
lucene/dev/branches/pforcodec_3892/lucene/facet/src/java/org/apache/lucene/facet/index/FacetsPayloadProcessorProvider.java
lucene/dev/branches/pforcodec_3892/solr/solrj/src/java/org/apache/solr/common/cloud/SafeStopThread.java
Modified:
lucene/dev/branches/pforcodec_3892/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/pforcodec_3892/lucene/MIGRATE.txt (contents, props changed)
lucene/dev/branches/pforcodec_3892/lucene/analysis/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/analysis/common/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java
lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballPorterFilterFactory.java
lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestFactories.java
lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/java/org/apache/lucene/analysis/phonetic/PhoneticFilterFactory.java
lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestPhoneticFilterFactory.java
lucene/dev/branches/pforcodec_3892/lucene/core/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermsConsumer.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsWriter.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReader.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReaderContext.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/BufferedDeletesStream.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CoalescedDeletes.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReader.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReaderContext.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReader.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MergeState.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiFields.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/TermCollectingRewrite.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanUtil.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/util/FieldCacheSanityChecker.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDoc.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDocTermOrds.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDocsAndPositions.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterCommit.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestParallelCompositeReader.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestPrefixCodedTerms.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestSegmentMerger.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestThreadedForceMerge.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestTypePromotion.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/search/TestShardSearching.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java
lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/store/TestLockFactory.java
lucene/dev/branches/pforcodec_3892/lucene/facet/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/facet/src/examples/org/apache/lucene/facet/example/merge/TaxonomyMergeUtils.java
lucene/dev/branches/pforcodec_3892/lucene/facet/src/java/org/apache/lucene/facet/doc-files/userguide.html
lucene/dev/branches/pforcodec_3892/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java
lucene/dev/branches/pforcodec_3892/lucene/join/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
lucene/dev/branches/pforcodec_3892/lucene/misc/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java
lucene/dev/branches/pforcodec_3892/lucene/misc/src/java/org/apache/lucene/index/PKIndexSplitter.java
lucene/dev/branches/pforcodec_3892/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java
lucene/dev/branches/pforcodec_3892/lucene/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java
lucene/dev/branches/pforcodec_3892/lucene/queries/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/queries/src/test/org/apache/lucene/queries/BooleanFilterTest.java
lucene/dev/branches/pforcodec_3892/lucene/queries/src/test/org/apache/lucene/queries/TermsFilterTest.java
lucene/dev/branches/pforcodec_3892/lucene/queryparser/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/builders/TestNumericRangeFilterBuilder.java
lucene/dev/branches/pforcodec_3892/lucene/suggest/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java
lucene/dev/branches/pforcodec_3892/lucene/test-framework/ (props changed)
lucene/dev/branches/pforcodec_3892/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
lucene/dev/branches/pforcodec_3892/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
lucene/dev/branches/pforcodec_3892/lucene/test-framework/src/java/org/apache/lucene/search/ShardSearchingTestBase.java
lucene/dev/branches/pforcodec_3892/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java
lucene/dev/branches/pforcodec_3892/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
lucene/dev/branches/pforcodec_3892/lucene/test-framework/src/java/org/apache/lucene/util/QuickPatchThreadsFilter.java
lucene/dev/branches/pforcodec_3892/solr/ (props changed)
lucene/dev/branches/pforcodec_3892/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/pforcodec_3892/solr/core/ (props changed)
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/cloud/Overseer.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/cloud/ZkController.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/SnapPuller.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/internal/csv/ExtendedBufferedReader.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/servlet/ZookeeperInfoServlet.java
lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
lucene/dev/branches/pforcodec_3892/solr/core/src/test-files/solr/collection1/conf/solrconfig-update-processor-chains.xml
lucene/dev/branches/pforcodec_3892/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyNothingIsSafeTest.java
lucene/dev/branches/pforcodec_3892/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeySafeLeaderTest.java
lucene/dev/branches/pforcodec_3892/solr/core/src/test/org/apache/solr/cloud/LeaderElectionTest.java
lucene/dev/branches/pforcodec_3892/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
lucene/dev/branches/pforcodec_3892/solr/core/src/test/org/apache/solr/search/TestDocSet.java
lucene/dev/branches/pforcodec_3892/solr/core/src/test/org/apache/solr/search/TestSort.java
lucene/dev/branches/pforcodec_3892/solr/core/src/test/org/apache/solr/update/processor/FieldMutatingUpdateProcessorTest.java
lucene/dev/branches/pforcodec_3892/solr/solrj/ (props changed)
lucene/dev/branches/pforcodec_3892/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java
lucene/dev/branches/pforcodec_3892/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
lucene/dev/branches/pforcodec_3892/solr/solrj/src/java/org/apache/solr/common/cloud/ZkCmdExecutor.java
lucene/dev/branches/pforcodec_3892/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
lucene/dev/branches/pforcodec_3892/solr/solrj/src/java/org/apache/zookeeper/SolrZooKeeper.java
lucene/dev/branches/pforcodec_3892/solr/test-framework/ (props changed)
lucene/dev/branches/pforcodec_3892/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java
lucene/dev/branches/pforcodec_3892/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
lucene/dev/branches/pforcodec_3892/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
lucene/dev/branches/pforcodec_3892/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
lucene/dev/branches/pforcodec_3892/solr/testlogging.properties (contents, props changed)
lucene/dev/branches/pforcodec_3892/solr/webapp/ (props changed)
lucene/dev/branches/pforcodec_3892/solr/webapp/web/js/scripts/schema-browser.js
lucene/dev/branches/pforcodec_3892/solr/webapp/web/tpl/schema-browser.html
Modified: lucene/dev/branches/pforcodec_3892/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/CHANGES.txt?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/CHANGES.txt Wed Aug 15 12:22:02 2012
@@ -31,6 +31,25 @@ API Changes
and exposes Iterator, so you can iterate over field names with
for (String field : fields) instead. (Robert Muir)
+* LUCENE-4152: added IndexReader.leaves(), which lets you enumerate
+ the leaf atomic reader contexts for all readers in the tree.
+ (Uwe Schindler, Robert Muir)
+
+* LUCENE-4304: removed PayloadProcessorProvider. If you want to change
+ payloads (or other things) when merging indexes, its recommended
+ to just use a FilterAtomicReader + IndexWriter.addIndexes. See the
+ OrdinalMappingAtomicReader and TaxonomyMergeUtils in the facets
+ module if you want an example of this.
+ (Mike McCandless, Uwe Schindler, Shai Erera, Robert Muir)
+
+* LUCENE-4304: Make CompositeReader.getSequentialSubReaders()
+ protected. To get atomic leaves of any IndexReader use the new method
+ leaves() (LUCENE-4152), which lists AtomicReaderContexts including
+ the doc base of each leaf. (Uwe Schindler, Robert Muir)
+
+* LUCENE-4307: Renamed IndexReader.getTopReaderContext to
+ IndexReader.getContext. (Robert Muir)
+
Bug Fixes
* LUCENE-4297: BooleanScorer2 would multiply the coord() factor
@@ -52,11 +71,20 @@ Bug Fixes
upgraded to 3.x, then to Lucene 4.0-ALPHA or -BETA, you should run
CheckIndex. If it fails, then you need to upgrade again to 4.0 (Robert Muir)
+* LUCENE-4303: PhoneticFilterFactory and SnowballPorterFilterFactory load their
+ encoders / stemmers via the ResourceLoader now instead of Class.forName().
+ Solr users should now no longer have to embed these in its war. (David Smiley)
+
Build
* LUCENE-3985: Upgrade to randomizedtesting 2.0.0. Added support for
thread leak detection. Added support for suite timeouts. (Dawid Weiss)
+Documentation
+
+* LUCENE-4302: Fix facet userguide to have HTML loose doctype like
+ all other javadocs. (Karl Nicholas via Uwe Schindler)
+
======================= Lucene 4.0.0-BETA =======================
New features
Modified: lucene/dev/branches/pforcodec_3892/lucene/MIGRATE.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/MIGRATE.txt?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/MIGRATE.txt (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/MIGRATE.txt Wed Aug 15 12:22:02 2012
@@ -314,6 +314,16 @@ an AtomicReader. Note: using "atomicity
slowdowns due to the need to merge terms, postings, DocValues, and
FieldCache, use them with care!
+## LUCENE-4306: getSequentialSubReaders(), ReaderUtil.Gather
+
+The method IndexReader#getSequentialSubReaders() was moved to CompositeReader
+(see LUCENE-2858, LUCENE-3733) and made protected. It is solely used by
+CompositeReader itsself to build its reader tree. To get all atomic leaves
+of a reader, use IndexReader#leaves(), which also provides the doc base
+of each leave. Readers that are already atomic return itsself as leaf with
+doc base 0. To emulate Lucene 3.x getSequentialSubReaders(),
+use getContext().children().
+
## LUCENE-2413,LUCENE-3396: Analyzer package changes
Lucene's core and contrib analyzers, along with Solr's analyzers,
Modified: lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java Wed Aug 15 12:22:02 2012
@@ -44,7 +44,7 @@ public final class SnowballFilter extend
private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
private final KeywordAttribute keywordAttr = addAttribute(KeywordAttribute.class);
-
+
public SnowballFilter(TokenStream input, SnowballProgram stemmer) {
super(input);
this.stemmer = stemmer;
@@ -62,7 +62,9 @@ public final class SnowballFilter extend
*/
public SnowballFilter(TokenStream in, String name) {
super(in);
- try {
+ //Class.forName is frowned upon in place of the ResourceLoader but in this case,
+ // the factory will use the other constructor so that the program is already loaded.
+ try {
Class<? extends SnowballProgram> stemClass =
Class.forName("org.tartarus.snowball.ext." + name + "Stemmer").asSubclass(SnowballProgram.class);
stemmer = stemClass.newInstance();
Modified: lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballPorterFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballPorterFilterFactory.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballPorterFilterFactory.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/java/org/apache/lucene/analysis/snowball/SnowballPorterFilterFactory.java Wed Aug 15 12:22:02 2012
@@ -46,35 +46,28 @@ public class SnowballPorterFilterFactory
public static final String PROTECTED_TOKENS = "protected";
private String language = "English";
- private Class<?> stemClass;
-
+ private Class<? extends SnowballProgram> stemClass;
+ private CharArraySet protectedWords = null;
+ @Override
public void inform(ResourceLoader loader) throws IOException {
+ String cfgLanguage = args.get("language");
+ if (cfgLanguage != null)
+ language = cfgLanguage;
+
+ String className = "org.tartarus.snowball.ext." + language + "Stemmer";
+ stemClass = loader.newInstance(className, SnowballProgram.class).getClass();
+
String wordFiles = args.get(PROTECTED_TOKENS);
if (wordFiles != null) {
protectedWords = getWordSet(loader, wordFiles, false);
}
}
- private CharArraySet protectedWords = null;
-
- @Override
- public void init(Map<String, String> args) {
- super.init(args);
- final String cfgLanguage = args.get("language");
- if(cfgLanguage!=null) language = cfgLanguage;
-
- try {
- stemClass = Class.forName("org.tartarus.snowball.ext." + language + "Stemmer");
- } catch (ClassNotFoundException e) {
- throw new IllegalArgumentException("Can't find class for stemmer language " + language, e);
- }
- }
-
public TokenFilter create(TokenStream input) {
SnowballProgram program;
try {
- program = (SnowballProgram)stemClass.newInstance();
+ program = stemClass.newInstance();
} catch (Exception e) {
throw new RuntimeException("Error instantiating stemmer for language " + language + "from class " + stemClass, e);
}
Modified: lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestFactories.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestFactories.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestFactories.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestFactories.java Wed Aug 15 12:22:02 2012
@@ -27,6 +27,7 @@ import org.apache.lucene.analysis.MockTo
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.util.AbstractAnalysisFactory;
import org.apache.lucene.analysis.util.CharFilterFactory;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.analysis.util.MultiTermAwareComponent;
import org.apache.lucene.analysis.util.ResourceLoaderAware;
import org.apache.lucene.analysis.util.StringMockResourceLoader;
@@ -114,11 +115,15 @@ public class TestFactories extends BaseT
}
/** tries to initialize a factory with no arguments */
- private boolean initialize(AbstractAnalysisFactory factory) {
+ private boolean initialize(AbstractAnalysisFactory factory) throws IOException {
boolean success = false;
try {
factory.setLuceneMatchVersion(TEST_VERSION_CURRENT);
factory.init(Collections.<String,String>emptyMap());
+ if (factory instanceof ResourceLoaderAware) {
+ ResourceLoaderAware resourceLoaderAware = (ResourceLoaderAware) factory;
+ resourceLoaderAware.inform(new ClasspathResourceLoader(factory.getClass()));
+ }
success = true;
} catch (IllegalArgumentException ignored) {
// its ok if we dont provide the right parameters to throw this
Modified: lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/java/org/apache/lucene/analysis/phonetic/PhoneticFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/java/org/apache/lucene/analysis/phonetic/PhoneticFilterFactory.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/java/org/apache/lucene/analysis/phonetic/PhoneticFilterFactory.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/java/org/apache/lucene/analysis/phonetic/PhoneticFilterFactory.java Wed Aug 15 12:22:02 2012
@@ -17,6 +17,7 @@ package org.apache.lucene.analysis.phone
* limitations under the License.
*/
+import java.io.IOException;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
@@ -26,7 +27,8 @@ import java.util.Map;
import org.apache.commons.codec.Encoder;
import org.apache.commons.codec.language.*;
import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.phonetic.PhoneticFilter;
+import org.apache.lucene.analysis.util.ResourceLoader;
+import org.apache.lucene.analysis.util.ResourceLoaderAware;
import org.apache.lucene.analysis.util.TokenFilterFactory;
/**
@@ -57,6 +59,7 @@ import org.apache.lucene.analysis.util.T
* @see PhoneticFilter
*/
public class PhoneticFilterFactory extends TokenFilterFactory
+ implements ResourceLoaderAware
{
public static final String ENCODER = "encoder";
public static final String INJECT = "inject"; // boolean
@@ -75,18 +78,17 @@ public class PhoneticFilterFactory exten
registry.put("ColognePhonetic".toUpperCase(Locale.ROOT), ColognePhonetic.class);
}
- protected boolean inject = true;
- protected String name = null;
- protected Class<? extends Encoder> clazz = null;
- protected Method setMaxCodeLenMethod = null;
- protected Integer maxCodeLength = null;
+ boolean inject = true; //accessed by the test
+ private String name = null;
+ private Class<? extends Encoder> clazz = null;
+ private Method setMaxCodeLenMethod = null;
+ private Integer maxCodeLength = null;
@Override
- public void init(Map<String,String> args) {
- super.init( args );
+ public void inform(ResourceLoader loader) throws IOException {
inject = getBoolean(INJECT, true);
-
+
String name = args.get( ENCODER );
if( name == null ) {
throw new IllegalArgumentException("Missing required parameter: " + ENCODER
@@ -94,7 +96,7 @@ public class PhoneticFilterFactory exten
}
clazz = registry.get(name.toUpperCase(Locale.ROOT));
if( clazz == null ) {
- clazz = resolveEncoder(name);
+ clazz = resolveEncoder(name, loader);
}
String v = args.get(MAX_CODE_LENGTH);
@@ -110,17 +112,15 @@ public class PhoneticFilterFactory exten
getEncoder();//trigger initialization for potential problems to be thrown now
}
- private Class<? extends Encoder> resolveEncoder(String name) {
+ private Class<? extends Encoder> resolveEncoder(String name, ResourceLoader loader) {
String lookupName = name;
if (name.indexOf('.') == -1) {
lookupName = PACKAGE_CONTAINING_ENCODERS + name;
}
try {
- return Class.forName(lookupName).asSubclass(Encoder.class);
- } catch (ClassNotFoundException cnfe) {
- throw new IllegalArgumentException("Unknown encoder: " + name + " must be full class name or one of " + registry.keySet(), cnfe);
- } catch (ClassCastException e) {
- throw new IllegalArgumentException("Not an encoder: " + name + " must be full class name or one of " + registry.keySet(), e);
+ return loader.newInstance(lookupName, Encoder.class).getClass();
+ } catch (RuntimeException e) {
+ throw new IllegalArgumentException("Error loading encoder '" + name + "': must be full class name or one of " + registry.keySet(), e);
}
}
Modified: lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestPhoneticFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestPhoneticFilterFactory.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestPhoneticFilterFactory.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/analysis/phonetic/src/test/org/apache/lucene/analysis/phonetic/TestPhoneticFilterFactory.java Wed Aug 15 12:22:02 2012
@@ -17,6 +17,7 @@ package org.apache.lucene.analysis.phone
* limitations under the License.
*/
+import java.io.IOException;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;
@@ -27,6 +28,7 @@ import org.apache.lucene.analysis.BaseTo
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Tokenizer;
+import org.apache.lucene.analysis.util.ClasspathResourceLoader;
import org.apache.lucene.util.LuceneTestCase.Slow;
@@ -41,48 +43,54 @@ public class TestPhoneticFilterFactory e
/**
* Case: default
*/
- public void testFactory()
- {
+ public void testFactory() throws IOException {
Map<String,String> args = new HashMap<String, String>();
PhoneticFilterFactory ff = new PhoneticFilterFactory();
args.put( PhoneticFilterFactory.ENCODER, "Metaphone" );
ff.init( args );
+ ff.inform(new ClasspathResourceLoader(ff.getClass()));
assertTrue( ff.getEncoder() instanceof Metaphone );
assertTrue( ff.inject ); // default
args.put( PhoneticFilterFactory.INJECT, "false" );
ff.init( args );
+ ff.inform(new ClasspathResourceLoader(ff.getClass()));
assertFalse( ff.inject );
args.put( PhoneticFilterFactory.MAX_CODE_LENGTH, "2");
- ff.init( args );
- assertEquals(2,((Metaphone) ff.getEncoder()).getMaxCodeLen());
+ ff.init(args);
+ ff.inform(new ClasspathResourceLoader(ff.getClass()));
+ assertEquals(2, ((Metaphone) ff.getEncoder()).getMaxCodeLen());
}
/**
* Case: Failures and Exceptions
*/
- public void testFactoryCaseFailure()
- {
+ public void testFactoryCaseFailure() throws IOException {
Map<String,String> args = new HashMap<String, String>();
PhoneticFilterFactory ff = new PhoneticFilterFactory();
+ ClasspathResourceLoader loader = new ClasspathResourceLoader(ff.getClass());
+
try {
ff.init( args );
+ ff.inform( loader );
fail( "missing encoder parameter" );
}
catch( Exception ex ) {}
args.put( PhoneticFilterFactory.ENCODER, "XXX" );
try {
ff.init( args );
+ ff.inform( loader );
fail( "unknown encoder parameter" );
}
catch( Exception ex ) {}
args.put( PhoneticFilterFactory.ENCODER, "org.apache.commons.codec.language.NonExistence" );
try {
ff.init( args );
+ ff.inform( loader );
fail( "unknown encoder parameter" );
}
catch( Exception ex ) {}
@@ -91,14 +99,15 @@ public class TestPhoneticFilterFactory e
/**
* Case: Reflection
*/
- public void testFactoryCaseReflection()
- {
+ public void testFactoryCaseReflection() throws IOException {
Map<String,String> args = new HashMap<String, String>();
PhoneticFilterFactory ff = new PhoneticFilterFactory();
+ ClasspathResourceLoader loader = new ClasspathResourceLoader(ff.getClass());
args.put( PhoneticFilterFactory.ENCODER, "org.apache.commons.codec.language.Metaphone" );
ff.init( args );
+ ff.inform( loader );
assertTrue( ff.getEncoder() instanceof Metaphone );
assertTrue( ff.inject ); // default
@@ -106,12 +115,14 @@ public class TestPhoneticFilterFactory e
// so this effectively tests reflection without package name
args.put( PhoneticFilterFactory.ENCODER, "Caverphone2" );
ff.init( args );
+ ff.inform( loader );
assertTrue( ff.getEncoder() instanceof Caverphone2 );
assertTrue( ff.inject ); // default
// cross check with registry
args.put( PhoneticFilterFactory.ENCODER, "Caverphone" );
ff.init( args );
+ ff.inform( loader );
assertTrue( ff.getEncoder() instanceof Caverphone2 );
assertTrue( ff.inject ); // default
}
@@ -158,6 +169,7 @@ public class TestPhoneticFilterFactory e
args.put("inject", inject);
PhoneticFilterFactory factory = new PhoneticFilterFactory();
factory.init(args);
+ factory.inform(new ClasspathResourceLoader(factory.getClass()));
TokenStream stream = factory.create(tokenizer);
assertTokenStreamContents(stream, expected);
}
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java Wed Aug 15 12:22:02 2012
@@ -123,18 +123,7 @@ public final class MappingMultiDocsAndPo
@Override
public BytesRef getPayload() throws IOException {
- BytesRef payload = current.getPayload();
- if (mergeState.currentPayloadProcessor[upto] != null && payload != null) {
- // to not violate the D&P api, we must give the processor a private copy
- // TODO: reuse a BytesRef if there is a PPP
- payload = BytesRef.deepCopyOf(payload);
- mergeState.currentPayloadProcessor[upto].processPayload(payload);
- if (payload.length == 0) {
- // don't let PayloadProcessors corrumpt the index
- return null;
- }
- }
- return payload;
+ return current.getPayload();
}
}
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java Wed Aug 15 12:22:02 2012
@@ -27,8 +27,6 @@ import org.apache.lucene.index.FieldInfo
import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.Fields;
import org.apache.lucene.index.MergeState;
-import org.apache.lucene.index.PayloadProcessorProvider.PayloadProcessor;
-import org.apache.lucene.index.PayloadProcessorProvider.ReaderPayloadProcessor;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.DocIdSetIterator;
@@ -170,12 +168,7 @@ public abstract class TermVectorsWriter
final AtomicReader reader = mergeState.readers.get(i);
final int maxDoc = reader.maxDoc();
final Bits liveDocs = reader.getLiveDocs();
- // set PayloadProcessor
- if (mergeState.payloadProcessorProvider != null) {
- mergeState.currentReaderPayloadProcessor = mergeState.readerPayloadProcessor[i];
- } else {
- mergeState.currentReaderPayloadProcessor = null;
- }
+
for (int docID = 0; docID < maxDoc; docID++) {
if (liveDocs != null && !liveDocs.get(docID)) {
// skip deleted docs
@@ -215,9 +208,6 @@ public abstract class TermVectorsWriter
TermsEnum termsEnum = null;
DocsAndPositionsEnum docsAndPositionsEnum = null;
- final ReaderPayloadProcessor readerPayloadProcessor = mergeState.currentReaderPayloadProcessor;
- PayloadProcessor payloadProcessor = null;
-
for(String fieldName : vectors) {
final FieldInfo fieldInfo = mergeState.fieldInfos.fieldInfo(fieldName);
@@ -250,10 +240,6 @@ public abstract class TermVectorsWriter
final int freq = (int) termsEnum.totalTermFreq();
startTerm(termsEnum.term(), freq);
-
- if (hasPayloads && readerPayloadProcessor != null) {
- payloadProcessor = readerPayloadProcessor.getProcessor(fieldName, termsEnum.term());
- }
if (hasPositions || hasOffsets) {
docsAndPositionsEnum = termsEnum.docsAndPositions(null, docsAndPositionsEnum);
@@ -268,17 +254,7 @@ public abstract class TermVectorsWriter
final int startOffset = docsAndPositionsEnum.startOffset();
final int endOffset = docsAndPositionsEnum.endOffset();
- BytesRef payload = docsAndPositionsEnum.getPayload();
-
- if (payloadProcessor != null && payload != null) {
- // to not violate the D&P api, we must give the processor a private copy
- payload = BytesRef.deepCopyOf(payload);
- payloadProcessor.processPayload(payload);
- if (payload.length == 0) {
- // don't let PayloadProcessors corrumpt the index
- payload = null;
- }
- }
+ final BytesRef payload = docsAndPositionsEnum.getPayload();
assert !hasPositions || pos >= 0;
addPosition(pos, startOffset, endOffset, payload);
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermsConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermsConsumer.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermsConsumer.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/TermsConsumer.java Wed Aug 15 12:22:02 2012
@@ -154,14 +154,7 @@ public abstract class TermsConsumer {
postingsEnumIn = (MultiDocsAndPositionsEnum) termsEnum.docsAndPositions(null, postingsEnumIn, DocsAndPositionsEnum.FLAG_PAYLOADS);
assert postingsEnumIn != null;
postingsEnum.reset(postingsEnumIn);
- // set PayloadProcessor
- if (mergeState.payloadProcessorProvider != null) {
- for (int i = 0; i < mergeState.readers.size(); i++) {
- if (mergeState.readerPayloadProcessor[i] != null) {
- mergeState.currentPayloadProcessor[i] = mergeState.readerPayloadProcessor[i].getProcessor(mergeState.fieldInfo.name, term);
- }
- }
- }
+
final PostingsConsumer postingsConsumer = startTerm(term);
final TermStats stats = postingsConsumer.merge(mergeState, postingsEnum, visitedDocs);
if (stats.docFreq > 0) {
@@ -188,14 +181,7 @@ public abstract class TermsConsumer {
postingsEnumIn = (MultiDocsAndPositionsEnum) termsEnum.docsAndPositions(null, postingsEnumIn);
assert postingsEnumIn != null;
postingsEnum.reset(postingsEnumIn);
- // set PayloadProcessor
- if (mergeState.payloadProcessorProvider != null) {
- for (int i = 0; i < mergeState.readers.size(); i++) {
- if (mergeState.readerPayloadProcessor[i] != null) {
- mergeState.currentPayloadProcessor[i] = mergeState.readerPayloadProcessor[i].getProcessor(mergeState.fieldInfo.name, term);
- }
- }
- }
+
final PostingsConsumer postingsConsumer = startTerm(term);
final TermStats stats = postingsConsumer.merge(mergeState, postingsEnum, visitedDocs);
if (stats.docFreq > 0) {
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsWriter.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsWriter.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsWriter.java Wed Aug 15 12:22:02 2012
@@ -315,12 +315,7 @@ public final class Lucene40TermVectorsWr
int numDocs = 0;
for (int i = 0; i < mergeState.readers.size(); i++) {
final AtomicReader reader = mergeState.readers.get(i);
- // set PayloadProcessor
- if (mergeState.payloadProcessorProvider != null) {
- mergeState.currentReaderPayloadProcessor = mergeState.readerPayloadProcessor[i];
- } else {
- mergeState.currentReaderPayloadProcessor = null;
- }
+
final SegmentReader matchingSegmentReader = mergeState.matchingSegmentReaders[idx++];
Lucene40TermVectorsReader matchingVectorsReader = null;
if (matchingSegmentReader != null) {
@@ -353,8 +348,8 @@ public final class Lucene40TermVectorsWr
final int maxDoc = reader.maxDoc();
final Bits liveDocs = reader.getLiveDocs();
int totalNumDocs = 0;
- if (matchingVectorsReader != null && mergeState.currentReaderPayloadProcessor == null) {
- // We can bulk-copy because the fieldInfos are "congruent" and there is no payload processor
+ if (matchingVectorsReader != null) {
+ // We can bulk-copy because the fieldInfos are "congruent"
for (int docNum = 0; docNum < maxDoc;) {
if (!liveDocs.get(docNum)) {
// skip deleted docs
@@ -404,8 +399,8 @@ public final class Lucene40TermVectorsWr
int rawDocLengths2[])
throws IOException {
final int maxDoc = reader.maxDoc();
- if (matchingVectorsReader != null && mergeState.currentReaderPayloadProcessor == null) {
- // We can bulk-copy because the fieldInfos are "congruent" and there is no payload processor
+ if (matchingVectorsReader != null) {
+ // We can bulk-copy because the fieldInfos are "congruent"
int docCount = 0;
while (docCount < maxDoc) {
int len = Math.min(MAX_RAW_MERGE_DOCS, maxDoc - docCount);
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReader.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReader.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReader.java Wed Aug 15 12:22:02 2012
@@ -54,7 +54,7 @@ public abstract class AtomicReader exten
}
@Override
- public final AtomicReaderContext getTopReaderContext() {
+ public final AtomicReaderContext getContext() {
ensureOpen();
return readerContext;
}
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReaderContext.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReaderContext.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReaderContext.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/AtomicReaderContext.java Wed Aug 15 12:22:02 2012
@@ -21,8 +21,7 @@ import java.util.Collections;
import java.util.List;
/**
- * {@link IndexReaderContext} for {@link AtomicReader} instances
- * @lucene.experimental
+ * {@link IndexReaderContext} for {@link AtomicReader} instances.
*/
public final class AtomicReaderContext extends IndexReaderContext {
/** The readers ord in the top-level's leaves array */
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/BufferedDeletesStream.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/BufferedDeletesStream.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/BufferedDeletesStream.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/BufferedDeletesStream.java Wed Aug 15 12:22:02 2012
@@ -439,7 +439,7 @@ class BufferedDeletesStream {
// Delete by query
private static long applyQueryDeletes(Iterable<QueryAndLimit> queriesIter, ReadersAndLiveDocs rld, final SegmentReader reader) throws IOException {
long delCount = 0;
- final AtomicReaderContext readerContext = reader.getTopReaderContext();
+ final AtomicReaderContext readerContext = reader.getContext();
boolean any = false;
for (QueryAndLimit ent : queriesIter) {
Query query = ent.query;
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CoalescedDeletes.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CoalescedDeletes.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CoalescedDeletes.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CoalescedDeletes.java Wed Aug 15 12:22:02 2012
@@ -24,7 +24,6 @@ import java.util.List;
import java.util.Map;
import org.apache.lucene.search.Query;
-import org.apache.lucene.util.MergedIterator;
import org.apache.lucene.index.BufferedDeletesStream.QueryAndLimit;
class CoalescedDeletes {
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReader.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReader.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReader.java Wed Aug 15 12:22:02 2012
@@ -78,16 +78,18 @@ public abstract class CompositeReader ex
}
/** Expert: returns the sequential sub readers that this
- * reader is logically composed of. It contrast to previous
- * Lucene versions may not return null.
- * If this method returns an empty array, that means this
- * reader is a null reader (for example a MultiReader
- * that has no sub readers).
+ * reader is logically composed of. This method may not
+ * return {@code null}.
+ *
+ * <p><b>NOTE:</b> In contrast to previous Lucene versions this method
+ * is no longer public, code that wants to get all {@link AtomicReader}s
+ * this composite is composed of should use {@link IndexReader#leaves()}.
+ * @see IndexReader#leaves()
*/
- public abstract List<? extends IndexReader> getSequentialSubReaders();
+ protected abstract List<? extends IndexReader> getSequentialSubReaders();
@Override
- public final CompositeReaderContext getTopReaderContext() {
+ public final CompositeReaderContext getContext() {
ensureOpen();
// lazy init without thread safety for perf reasons: Building the readerContext twice does not hurt!
if (readerContext == null) {
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReaderContext.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReaderContext.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReaderContext.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/CompositeReaderContext.java Wed Aug 15 12:22:02 2012
@@ -24,7 +24,6 @@ import java.util.List;
/**
* {@link IndexReaderContext} for {@link CompositeReader} instance.
- * @lucene.experimental
*/
public final class CompositeReaderContext extends IndexReaderContext {
private final List<IndexReaderContext> children;
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReader.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReader.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReader.java Wed Aug 15 12:22:02 2012
@@ -21,6 +21,7 @@ import java.io.Closeable;
import java.io.IOException;
import java.util.Collections;
import java.util.LinkedHashSet;
+import java.util.List;
import java.util.WeakHashMap;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
@@ -377,9 +378,11 @@ public abstract class IndexReader implem
protected abstract void doClose() throws IOException;
/**
- * Expert: Returns a the root {@link IndexReaderContext} for this
- * {@link IndexReader}'s sub-reader tree. Iff this reader is composed of sub
- * readers ,ie. this reader being a composite reader, this method returns a
+ * Expert: Returns the root {@link IndexReaderContext} for this
+ * {@link IndexReader}'s sub-reader tree.
+ * <p>
+ * Iff this reader is composed of sub
+ * readers, i.e. this reader being a composite reader, this method returns a
* {@link CompositeReaderContext} holding the reader's direct children as well as a
* view of the reader tree's atomic leaf contexts. All sub-
* {@link IndexReaderContext} instances referenced from this readers top-level
@@ -388,14 +391,21 @@ public abstract class IndexReader implem
* atomic leaf reader at a time. If this reader is not composed of child
* readers, this method returns an {@link AtomicReaderContext}.
* <p>
- * Note: Any of the sub-{@link CompositeReaderContext} instances reference from this
- * top-level context holds a <code>null</code> {@link CompositeReaderContext#leaves()}
- * reference. Only the top-level context maintains the convenience leaf-view
+ * Note: Any of the sub-{@link CompositeReaderContext} instances referenced
+ * from this top-level context do not support {@link CompositeReaderContext#leaves()}.
+ * Only the top-level context maintains the convenience leaf-view
* for performance reasons.
- *
- * @lucene.experimental
*/
- public abstract IndexReaderContext getTopReaderContext();
+ public abstract IndexReaderContext getContext();
+
+ /**
+ * Returns the reader's leaves, or itself if this reader is atomic.
+ * This is a convenience method calling {@code this.getContext().leaves()}.
+ * @see IndexReaderContext#leaves()
+ */
+ public final List<AtomicReaderContext> leaves() {
+ return getContext().leaves();
+ }
/** Expert: Returns a key for this IndexReader, so FieldCache/CachingWrapperFilter can find
* it again.
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java Wed Aug 15 12:22:02 2012
@@ -22,7 +22,6 @@ import java.util.List;
/**
* A struct like class that represents a hierarchical relationship between
* {@link IndexReader} instances.
- * @lucene.experimental
*/
public abstract class IndexReaderContext {
/** The reader context for this reader's immediate parent, or null if none */
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java Wed Aug 15 12:22:02 2012
@@ -260,9 +260,6 @@ public class IndexWriter implements Clos
// to allow users to query an IndexWriter settings.
private final LiveIndexWriterConfig config;
- // The PayloadProcessorProvider to use when segments are merged
- private PayloadProcessorProvider payloadProcessorProvider;
-
DirectoryReader getReader() throws IOException {
return getReader(true);
}
@@ -763,8 +760,15 @@ public class IndexWriter implements Clos
}
/**
- * Commits all changes to an index and closes all
- * associated files. Note that this may be a costly
+ * Commits all changes to an index, waits for pending merges
+ * to complete, and closes all associated files.
+ * <p>
+ * This is a "slow graceful shutdown" which may take a long time
+ * especially if a big merge is pending: If you only want to close
+ * resources use {@link #rollback()}. If you only want to commit
+ * pending changes and close resources see {@link #close(boolean)}.
+ * <p>
+ * Note that this may be a costly
* operation, so, try to re-use a single writer instead of
* closing and opening a new one. See {@link #commit()} for
* caveats about write caching done by some IO devices.
@@ -1263,7 +1267,7 @@ public class IndexWriter implements Clos
reader = (AtomicReader) readerIn;
} else {
// Composite reader: lookup sub-reader and re-base docID:
- List<AtomicReaderContext> leaves = readerIn.getTopReaderContext().leaves();
+ List<AtomicReaderContext> leaves = readerIn.leaves();
int subIndex = ReaderUtil.subIndex(docID, leaves);
reader = leaves.get(subIndex).reader();
docID -= leaves.get(subIndex).docBase;
@@ -2399,8 +2403,7 @@ public class IndexWriter implements Clos
false, codec, null, null);
SegmentMerger merger = new SegmentMerger(info, infoStream, trackingDir, config.getTermIndexInterval(),
- MergeState.CheckAbort.NONE, payloadProcessorProvider,
- globalFieldNumberMap, context);
+ MergeState.CheckAbort.NONE, globalFieldNumberMap, context);
for (IndexReader reader : readers) { // add new indexes
merger.add(reader);
@@ -3503,7 +3506,7 @@ public class IndexWriter implements Clos
final TrackingDirectoryWrapper dirWrapper = new TrackingDirectoryWrapper(directory);
SegmentMerger merger = new SegmentMerger(merge.info.info, infoStream, dirWrapper, config.getTermIndexInterval(), checkAbort,
- payloadProcessorProvider, globalFieldNumberMap, context);
+ globalFieldNumberMap, context);
if (infoStream.isEnabled("IW")) {
infoStream.message("IW", "merging " + segString(merge.segments));
@@ -4058,38 +4061,6 @@ public class IndexWriter implements Clos
synchronized void deletePendingFiles() throws IOException {
deleter.deletePendingFiles();
}
-
- /**
- * Sets the {@link PayloadProcessorProvider} to use when merging payloads.
- * Note that the given <code>pcp</code> will be invoked for every segment that
- * is merged, not only external ones that are given through
- * {@link #addIndexes}. If you want only the payloads of the external segments
- * to be processed, you can return <code>null</code> whenever a
- * {@link PayloadProcessorProvider.ReaderPayloadProcessor} is requested for the {@link Directory} of the
- * {@link IndexWriter}.
- * <p>
- * The default is <code>null</code> which means payloads are processed
- * normally (copied) during segment merges. You can also unset it by passing
- * <code>null</code>.
- * <p>
- * <b>NOTE:</b> the set {@link PayloadProcessorProvider} will be in effect
- * immediately, potentially for already running merges too. If you want to be
- * sure it is used for further operations only, such as {@link #addIndexes} or
- * {@link #forceMerge}, you can call {@link #waitForMerges()} before.
- */
- public void setPayloadProcessorProvider(PayloadProcessorProvider pcp) {
- ensureOpen();
- payloadProcessorProvider = pcp;
- }
-
- /**
- * Returns the {@link PayloadProcessorProvider} that is used during segment
- * merges to process payloads.
- */
- public PayloadProcessorProvider getPayloadProcessorProvider() {
- ensureOpen();
- return payloadProcessorProvider;
- }
/**
* NOTE: this method creates a compound file for all files returned by
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MergeState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MergeState.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MergeState.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MergeState.java Wed Aug 15 12:22:02 2012
@@ -19,8 +19,6 @@ package org.apache.lucene.index;
import java.util.List;
-import org.apache.lucene.index.PayloadProcessorProvider.PayloadProcessor;
-import org.apache.lucene.index.PayloadProcessorProvider.ReaderPayloadProcessor;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.InfoStream;
@@ -194,14 +192,6 @@ public class MergeState {
// Updated per field;
public FieldInfo fieldInfo;
- // Used to process payloads
- // TODO: this is a FactoryFactory here basically
- // and we could make a codec(wrapper) to do all of this privately so IW is uninvolved
- public PayloadProcessorProvider payloadProcessorProvider;
- public ReaderPayloadProcessor[] readerPayloadProcessor;
- public ReaderPayloadProcessor currentReaderPayloadProcessor;
- public PayloadProcessor[] currentPayloadProcessor;
-
// TODO: get rid of this? it tells you which segments are 'aligned' (e.g. for bulk merging)
// but is this really so expensive to compute again in different components, versus once in SM?
public SegmentReader[] matchingSegmentReaders;
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java Wed Aug 15 12:22:02 2012
@@ -36,7 +36,7 @@ import org.apache.lucene.util.packed.Pac
*
* <p><b>NOTE</b>: for multi readers, you'll get better
* performance by gathering the sub readers using
- * {@link IndexReader#getTopReaderContext()} to get the
+ * {@link IndexReader#getContext()} to get the
* atomic leaves and then operate per-AtomicReader,
* instead of using this class.
*
@@ -128,7 +128,7 @@ public class MultiDocValues extends DocV
return puller.pull((AtomicReader) reader, field);
}
assert reader instanceof CompositeReader;
- final List<AtomicReaderContext> leaves = reader.getTopReaderContext().leaves();
+ final List<AtomicReaderContext> leaves = reader.leaves();
switch (leaves.size()) {
case 0:
// no fields
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiFields.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiFields.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiFields.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/MultiFields.java Wed Aug 15 12:22:02 2012
@@ -28,7 +28,6 @@ import java.util.concurrent.ConcurrentHa
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.MergedIterator;
/**
* Exposes flex API, merged from flex API of sub-segments.
@@ -39,7 +38,7 @@ import org.apache.lucene.util.MergedIter
*
* <p><b>NOTE</b>: for composite readers, you'll get better
* performance by gathering the sub readers using
- * {@link IndexReader#getTopReaderContext()} to get the
+ * {@link IndexReader#getContext()} to get the
* atomic leaves and then operate per-AtomicReader,
* instead of using this class.
*
@@ -60,7 +59,7 @@ public final class MultiFields extends F
* It's better to get the sub-readers and iterate through them
* yourself. */
public static Fields getFields(IndexReader reader) throws IOException {
- final List<AtomicReaderContext> leaves = reader.getTopReaderContext().leaves();
+ final List<AtomicReaderContext> leaves = reader.leaves();
switch (leaves.size()) {
case 0:
// no fields
@@ -92,7 +91,7 @@ public final class MultiFields extends F
public static Bits getLiveDocs(IndexReader reader) {
if (reader.hasDeletions()) {
- final List<AtomicReaderContext> leaves = reader.getTopReaderContext().leaves();
+ final List<AtomicReaderContext> leaves = reader.leaves();
final int size = leaves.size();
assert size > 0 : "A reader with deletions must have at least one leave";
if (size == 1) {
@@ -182,7 +181,7 @@ public final class MultiFields extends F
this.subSlices = subSlices;
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({"unchecked","rawtypes"})
@Override
public Iterator<String> iterator() {
Iterator<String> subIterators[] = new Iterator[subs.length];
@@ -251,7 +250,7 @@ public final class MultiFields extends F
*/
public static FieldInfos getMergedFieldInfos(IndexReader reader) {
final FieldInfos.Builder builder = new FieldInfos.Builder();
- for(final AtomicReaderContext ctx : reader.getTopReaderContext().leaves()) {
+ for(final AtomicReaderContext ctx : reader.leaves()) {
builder.add(ctx.reader().getFieldInfos());
}
return builder.finish();
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java Wed Aug 15 12:22:02 2012
@@ -56,13 +56,11 @@ final class SegmentMerger {
// note, just like in codec apis Directory 'dir' is NOT the same as segmentInfo.dir!!
SegmentMerger(SegmentInfo segmentInfo, InfoStream infoStream, Directory dir, int termIndexInterval,
- MergeState.CheckAbort checkAbort, PayloadProcessorProvider payloadProcessorProvider,
- FieldInfos.FieldNumbers fieldNumbers, IOContext context) {
+ MergeState.CheckAbort checkAbort, FieldInfos.FieldNumbers fieldNumbers, IOContext context) {
mergeState.segmentInfo = segmentInfo;
mergeState.infoStream = infoStream;
mergeState.readers = new ArrayList<AtomicReader>();
mergeState.checkAbort = checkAbort;
- mergeState.payloadProcessorProvider = payloadProcessorProvider;
directory = dir;
this.termIndexInterval = termIndexInterval;
this.codec = segmentInfo.getCodec();
@@ -75,7 +73,7 @@ final class SegmentMerger {
* @param reader
*/
final void add(IndexReader reader) {
- for (final AtomicReaderContext ctx : reader.getTopReaderContext().leaves()) {
+ for (final AtomicReaderContext ctx : reader.leaves()) {
final AtomicReader r = ctx.reader();
mergeState.readers.add(r);
}
@@ -274,8 +272,6 @@ final class SegmentMerger {
// Remap docIDs
mergeState.docMaps = new MergeState.DocMap[numReaders];
mergeState.docBase = new int[numReaders];
- mergeState.readerPayloadProcessor = new PayloadProcessorProvider.ReaderPayloadProcessor[numReaders];
- mergeState.currentPayloadProcessor = new PayloadProcessorProvider.PayloadProcessor[numReaders];
int docBase = 0;
@@ -289,10 +285,6 @@ final class SegmentMerger {
mergeState.docMaps[i] = docMap;
docBase += docMap.numDocs();
- if (mergeState.payloadProcessorProvider != null) {
- mergeState.readerPayloadProcessor[i] = mergeState.payloadProcessorProvider.getReaderProcessor(reader);
- }
-
i++;
}
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java Wed Aug 15 12:22:02 2012
@@ -37,7 +37,7 @@ import org.apache.lucene.index.MultiRead
* <p><b>NOTE</b>: this class almost always results in a
* performance hit. If this is important to your use case,
* you'll get better performance by gathering the sub readers using
- * {@link IndexReader#getTopReaderContext()} to get the
+ * {@link IndexReader#getContext()} to get the
* atomic leaves and then operate per-AtomicReader,
* instead of using this class.
*/
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java Wed Aug 15 12:22:02 2012
@@ -122,7 +122,7 @@ public class IndexSearcher {
*
* @lucene.experimental */
public IndexSearcher(IndexReader r, ExecutorService executor) {
- this(r.getTopReaderContext(), executor);
+ this(r.getContext(), executor);
}
/**
@@ -138,7 +138,7 @@ public class IndexSearcher {
* href="https://issues.apache.org/jira/browse/LUCENE-2239">LUCENE-2239</a>).
*
* @see IndexReaderContext
- * @see IndexReader#getTopReaderContext()
+ * @see IndexReader#getContext()
* @lucene.experimental
*/
public IndexSearcher(IndexReaderContext context, ExecutorService executor) {
@@ -154,7 +154,7 @@ public class IndexSearcher {
* Creates a searcher searching the provided top-level {@link IndexReaderContext}.
*
* @see IndexReaderContext
- * @see IndexReader#getTopReaderContext()
+ * @see IndexReader#getContext()
* @lucene.experimental
*/
public IndexSearcher(IndexReaderContext context) {
@@ -639,7 +639,7 @@ public class IndexSearcher {
/**
* Returns this searchers the top-level {@link IndexReaderContext}.
- * @see IndexReader#getTopReaderContext()
+ * @see IndexReader#getContext()
*/
/* sugar for #getReader().getTopReaderContext() */
public IndexReaderContext getTopReaderContext() {
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/QueryWrapperFilter.java Wed Aug 15 12:22:02 2012
@@ -50,7 +50,7 @@ public class QueryWrapperFilter extends
@Override
public DocIdSet getDocIdSet(final AtomicReaderContext context, final Bits acceptDocs) throws IOException {
// get a private context that is used to rewrite, createWeight and score eventually
- final AtomicReaderContext privateContext = context.reader().getTopReaderContext();
+ final AtomicReaderContext privateContext = context.reader().getContext();
final Weight weight = new IndexSearcher(privateContext).createNormalizedWeight(query);
return new DocIdSet() {
@Override
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/TermCollectingRewrite.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/TermCollectingRewrite.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/TermCollectingRewrite.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/TermCollectingRewrite.java Wed Aug 15 12:22:02 2012
@@ -46,7 +46,7 @@ abstract class TermCollectingRewrite<Q e
final void collectTerms(IndexReader reader, MultiTermQuery query, TermCollector collector) throws IOException {
- IndexReaderContext topReaderContext = reader.getTopReaderContext();
+ IndexReaderContext topReaderContext = reader.getContext();
Comparator<BytesRef> lastTermComp = null;
for (AtomicReaderContext context : topReaderContext.leaves()) {
final Fields fields = context.reader().fields();
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanUtil.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanUtil.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanUtil.java Wed Aug 15 12:22:02 2012
@@ -60,7 +60,7 @@ public class PayloadSpanUtil {
* @param context
* that contains doc with payloads to extract
*
- * @see IndexReader#getTopReaderContext()
+ * @see IndexReader#getContext()
*/
public PayloadSpanUtil(IndexReaderContext context) {
this.context = context;
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/util/FieldCacheSanityChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/util/FieldCacheSanityChecker.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/util/FieldCacheSanityChecker.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/java/org/apache/lucene/util/FieldCacheSanityChecker.java Wed Aug 15 12:22:02 2012
@@ -25,8 +25,10 @@ import java.util.Set;
import org.apache.lucene.index.CompositeReader;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReaderContext;
import org.apache.lucene.search.FieldCache;
import org.apache.lucene.search.FieldCache.CacheEntry;
+import org.apache.lucene.store.AlreadyClosedException;
/**
* Provides methods for sanity checking that entries in the FieldCache
@@ -272,20 +274,28 @@ public final class FieldCacheSanityCheck
/**
* Checks if the seed is an IndexReader, and if so will walk
* the hierarchy of subReaders building up a list of the objects
- * returned by obj.getFieldCacheKey()
+ * returned by {@code seed.getCoreCacheKey()}
*/
private List<Object> getAllDescendantReaderKeys(Object seed) {
List<Object> all = new ArrayList<Object>(17); // will grow as we iter
all.add(seed);
for (int i = 0; i < all.size(); i++) {
- Object obj = all.get(i);
- if (obj instanceof CompositeReader) {
- List<? extends IndexReader> subs = ((CompositeReader)obj).getSequentialSubReaders();
- for (int j = 0; (null != subs) && (j < subs.size()); j++) {
- all.add(subs.get(j).getCoreCacheKey());
+ final Object obj = all.get(i);
+ // TODO: We don't check closed readers here (as getTopReaderContext
+ // throws AlreadyClosedException), what should we do? Reflection?
+ if (obj instanceof IndexReader) {
+ try {
+ final List<IndexReaderContext> childs =
+ ((IndexReader) obj).getContext().children();
+ if (childs != null) { // it is composite reader
+ for (final IndexReaderContext ctx : childs) {
+ all.add(ctx.reader().getCoreCacheKey());
+ }
+ }
+ } catch (AlreadyClosedException ace) {
+ // ignore this reader
}
}
-
}
// need to skip the first, because it was the seed
return all.subList(1, all.size());
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java Wed Aug 15 12:22:02 2012
@@ -23,9 +23,9 @@ import java.util.Random;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.index.AtomicReader;
+import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.DocsEnum;
-import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
@@ -50,7 +50,8 @@ public class TestReuseDocsEnum extends L
writer.commit();
DirectoryReader open = DirectoryReader.open(dir);
- for (AtomicReader indexReader : open.getSequentialSubReaders()) {
+ for (AtomicReaderContext ctx : open.leaves()) {
+ AtomicReader indexReader = ctx.reader();
Terms terms = indexReader.terms("body");
TermsEnum iterator = terms.iterator(null);
IdentityHashMap<DocsEnum, Boolean> enums = new IdentityHashMap<DocsEnum, Boolean>();
@@ -76,8 +77,8 @@ public class TestReuseDocsEnum extends L
writer.commit();
DirectoryReader open = DirectoryReader.open(dir);
- for (AtomicReader indexReader : open.getSequentialSubReaders()) {
- Terms terms = indexReader.terms("body");
+ for (AtomicReaderContext ctx : open.leaves()) {
+ Terms terms = ctx.reader().terms("body");
TermsEnum iterator = terms.iterator(null);
IdentityHashMap<DocsEnum, Boolean> enums = new IdentityHashMap<DocsEnum, Boolean>();
MatchNoBits bits = new Bits.MatchNoBits(open.maxDoc());
@@ -121,11 +122,11 @@ public class TestReuseDocsEnum extends L
DirectoryReader firstReader = DirectoryReader.open(dir);
DirectoryReader secondReader = DirectoryReader.open(dir);
- List<? extends AtomicReader> sequentialSubReaders = firstReader.getSequentialSubReaders();
- List<? extends AtomicReader> sequentialSubReaders2 = secondReader.getSequentialSubReaders();
+ List<AtomicReaderContext> leaves = firstReader.leaves();
+ List<AtomicReaderContext> leaves2 = secondReader.leaves();
- for (IndexReader indexReader : sequentialSubReaders) {
- Terms terms = ((AtomicReader) indexReader).terms("body");
+ for (AtomicReaderContext ctx : leaves) {
+ Terms terms = ctx.reader().terms("body");
TermsEnum iterator = terms.iterator(null);
IdentityHashMap<DocsEnum, Boolean> enums = new IdentityHashMap<DocsEnum, Boolean>();
MatchNoBits bits = new Bits.MatchNoBits(firstReader.maxDoc());
@@ -133,7 +134,7 @@ public class TestReuseDocsEnum extends L
DocsEnum docs = null;
BytesRef term = null;
while ((term = iterator.next()) != null) {
- docs = iterator.docs(null, randomDocsEnum("body", term, sequentialSubReaders2, bits), random().nextBoolean() ? DocsEnum.FLAG_FREQS : 0);
+ docs = iterator.docs(null, randomDocsEnum("body", term, leaves2, bits), random().nextBoolean() ? DocsEnum.FLAG_FREQS : 0);
enums.put(docs, true);
}
assertEquals(terms.size(), enums.size());
@@ -142,7 +143,7 @@ public class TestReuseDocsEnum extends L
enums.clear();
docs = null;
while ((term = iterator.next()) != null) {
- docs = iterator.docs(bits, randomDocsEnum("body", term, sequentialSubReaders2, bits), random().nextBoolean() ? DocsEnum.FLAG_FREQS : 0);
+ docs = iterator.docs(bits, randomDocsEnum("body", term, leaves2, bits), random().nextBoolean() ? DocsEnum.FLAG_FREQS : 0);
enums.put(docs, true);
}
assertEquals(terms.size(), enums.size());
@@ -150,11 +151,11 @@ public class TestReuseDocsEnum extends L
IOUtils.close(writer, firstReader, secondReader, dir);
}
- public DocsEnum randomDocsEnum(String field, BytesRef term, List<? extends AtomicReader> readers, Bits bits) throws IOException {
+ public DocsEnum randomDocsEnum(String field, BytesRef term, List<AtomicReaderContext> readers, Bits bits) throws IOException {
if (random().nextInt(10) == 0) {
return null;
}
- AtomicReader indexReader = (AtomicReader) readers.get(random().nextInt(readers.size()));
+ AtomicReader indexReader = readers.get(random().nextInt(readers.size())).reader();
return indexReader.termDocsEnum(bits, field, term, random().nextBoolean() ? DocsEnum.FLAG_FREQS : 0);
}
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestCustomNorms.java Wed Aug 15 12:22:02 2012
@@ -143,7 +143,7 @@ public class TestCustomNorms extends Luc
IndexReader reader = writer.getReader();
writer.close();
assertEquals(numAdded, reader.numDocs());
- IndexReaderContext topReaderContext = reader.getTopReaderContext();
+ IndexReaderContext topReaderContext = reader.getContext();
for (final AtomicReaderContext ctx : topReaderContext.leaves()) {
AtomicReader atomicReader = ctx.reader();
Source source = random().nextBoolean() ? atomicReader.normValues("foo").getSource() : atomicReader.normValues("foo").getDirectSource();
Modified: lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java?rev=1373365&r1=1373364&r2=1373365&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java (original)
+++ lucene/dev/branches/pforcodec_3892/lucene/core/src/test/org/apache/lucene/index/TestDeletionPolicy.java Wed Aug 15 12:22:02 2012
@@ -68,7 +68,7 @@ public class TestDeletionPolicy extends
public void onCommit(List<? extends IndexCommit> commits) throws IOException {
IndexCommit lastCommit = commits.get(commits.size()-1);
DirectoryReader r = DirectoryReader.open(dir);
- assertEquals("lastCommit.segmentCount()=" + lastCommit.getSegmentCount() + " vs IndexReader.segmentCount=" + r.getSequentialSubReaders().size(), r.getSequentialSubReaders().size(), lastCommit.getSegmentCount());
+ assertEquals("lastCommit.segmentCount()=" + lastCommit.getSegmentCount() + " vs IndexReader.segmentCount=" + r.leaves().size(), r.leaves().size(), lastCommit.getSegmentCount());
r.close();
verifyCommitOrder(commits);
numOnCommit++;
@@ -318,7 +318,7 @@ public class TestDeletionPolicy extends
final boolean needsMerging;
{
DirectoryReader r = DirectoryReader.open(dir);
- needsMerging = r.getSequentialSubReaders().size() != 1;
+ needsMerging = r.leaves().size() != 1;
r.close();
}
if (needsMerging) {
@@ -435,7 +435,7 @@ public class TestDeletionPolicy extends
DirectoryReader r = DirectoryReader.open(dir);
// Still merged, still 11 docs
- assertEquals(1, r.getSequentialSubReaders().size());
+ assertEquals(1, r.leaves().size());
assertEquals(11, r.numDocs());
r.close();
@@ -451,7 +451,7 @@ public class TestDeletionPolicy extends
r = DirectoryReader.open(dir);
// Not fully merged because we rolled it back, and now only
// 10 docs
- assertTrue(r.getSequentialSubReaders().size() > 1);
+ assertTrue(r.leaves().size() > 1);
assertEquals(10, r.numDocs());
r.close();
@@ -461,7 +461,7 @@ public class TestDeletionPolicy extends
writer.close();
r = DirectoryReader.open(dir);
- assertEquals(1, r.getSequentialSubReaders().size());
+ assertEquals(1, r.leaves().size());
assertEquals(10, r.numDocs());
r.close();
@@ -473,7 +473,7 @@ public class TestDeletionPolicy extends
// Reader still sees fully merged index, because writer
// opened on the prior commit has not yet committed:
r = DirectoryReader.open(dir);
- assertEquals(1, r.getSequentialSubReaders().size());
+ assertEquals(1, r.leaves().size());
assertEquals(10, r.numDocs());
r.close();
@@ -481,7 +481,7 @@ public class TestDeletionPolicy extends
// Now reader sees not-fully-merged index:
r = DirectoryReader.open(dir);
- assertTrue(r.getSequentialSubReaders().size() > 1);
+ assertTrue(r.leaves().size() > 1);
assertEquals(10, r.numDocs());
r.close();