Author: cstamas Date: Thu Dec 2 17:59:57 2010 New Revision: 1041505 URL: http://svn.apache.org/viewvc?rev=1041505&view=rev Log: Adding debug (Lucene Explain) capability (for debugging purposes), and also fixed all the places where non-NexusIndexer/Searcher was used (that was preventing to centralize Similarity changes).
Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/AbstractSearchRequest.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexSearcher.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/AbstractSearchRequest.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/AbstractSearchRequest.java?rev=1041505&r1=1041504&r2=1041505&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/AbstractSearchRequest.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/AbstractSearchRequest.java Thu Dec 2 17:59:57 2010 @@ -62,6 +62,13 @@ public class AbstractSearchRequest */ private List<MatchHighlightRequest> matchHighlightRequests; + /** + * Should Lucene Explanations be added to resulting ArtifactInfo's attributes (keyed as + * org.apache.lucene.search.Explanation.class.getName())? Warning: calculating these are costly operation, and + * should not be used in production systems (maybe on some "debug" like UI or so). + */ + private boolean luceneExplain = false; + public AbstractSearchRequest( Query query ) { this( query, null ); @@ -189,4 +196,14 @@ public class AbstractSearchRequest { this.matchHighlightRequests = matchHighlightRequests; } + + public boolean isLuceneExplain() + { + return luceneExplain; + } + + public void setLuceneExplain( boolean luceneExplain ) + { + this.luceneExplain = luceneExplain; + } } Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java?rev=1041505&r1=1041504&r2=1041505&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java Thu Dec 2 17:59:57 2010 @@ -27,6 +27,7 @@ import java.util.List; import org.apache.lucene.analysis.CachingTokenFilter; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.document.Document; +import org.apache.lucene.search.Explanation; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; @@ -190,10 +191,12 @@ public class DefaultIteratorResultSet { // uncomment this to have explainations too // WARNING: NOT FOR PRODUCTION SYSTEMS, THIS IS VERY COSTLY OPERATION - // For debugging only - // - // result.getAttributes().put( Explanation.class.getName(), - // indexSearcher.explain( searchRequest.getQuery(), hits.id( pointer ) ).toString() ); + // For debugging only!!! + if ( searchRequest.isLuceneExplain() ) + { + result.getAttributes().put( Explanation.class.getName(), + indexSearcher.explain( searchRequest.getQuery(), hits.id( pointer ) ).toString() ); + } result.setLuceneScore( hits.score( pointer ) ); Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java?rev=1041505&r1=1041504&r2=1041505&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java Thu Dec 2 17:59:57 2010 @@ -37,6 +37,7 @@ import org.apache.lucene.search.Sort; import org.apache.lucene.search.SortField; import org.apache.maven.index.context.IndexUtils; import org.apache.maven.index.context.IndexingContext; +import org.apache.maven.index.context.NexusIndexSearcher; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.logging.AbstractLogEnabled; @@ -326,7 +327,7 @@ public class DefaultSearchEngine MultiReader multiReader = new MultiReader( contextsToSearch.toArray( new IndexReader[contextsToSearch.size()] ) ); - IndexSearcher indexSearcher = new IndexSearcher( multiReader ); + IndexSearcher indexSearcher = new NexusIndexSearcher( multiReader ); // NEXUS-3482 made us to NOT use reverse ordering (it is a fix I wanted to implement, but user contributed patch // did come in faster! -- Thanks) Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexSearcher.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexSearcher.java?rev=1041505&r1=1041504&r2=1041505&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexSearcher.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexSearcher.java Thu Dec 2 17:59:57 2010 @@ -40,12 +40,20 @@ public class NexusIndexSearcher this( indexingContext, indexingContext.getIndexReader() ); } + public NexusIndexSearcher( final IndexReader reader ) + throws IOException + { + this( null, reader ); + } + public NexusIndexSearcher( final IndexingContext indexingContext, final IndexReader reader ) throws IOException { super( reader ); this.indexingContext = indexingContext; + + // setSimilarity( new NexusSimilarity() ); } public IndexingContext getIndexingContext() Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java?rev=1041505&r1=1041504&r2=1041505&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java Thu Dec 2 17:59:57 2010 @@ -40,15 +40,11 @@ public class NexusIndexWriter public NexusIndexWriter( final Directory directory, final Analyzer analyzer, boolean create ) throws CorruptIndexException, LockObtainFailedException, IOException { - this( directory, analyzer, create, false /* autoCommit */); - } - - public NexusIndexWriter( final Directory directory, final Analyzer analyzer, boolean create, boolean autoCommit ) - throws CorruptIndexException, LockObtainFailedException, IOException - { - super( directory, autoCommit, analyzer, create ); + super( directory, analyzer, create, MaxFieldLength.LIMITED ); this.closed = false; + + // setSimilarity( new NexusSimilarity() ); } @Override Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java?rev=1041505&r1=1041504&r2=1041505&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java Thu Dec 2 17:59:57 2010 @@ -45,6 +45,7 @@ import org.apache.maven.index.ArtifactIn import org.apache.maven.index.context.IndexCreator; import org.apache.maven.index.context.IndexUtils; import org.apache.maven.index.context.IndexingContext; +import org.apache.maven.index.context.NexusIndexWriter; import org.apache.maven.index.context.NexusLegacyAnalyzer; import org.apache.maven.index.creator.LegacyDocumentUpdater; import org.apache.maven.index.incremental.IncrementalHandler; @@ -291,7 +292,7 @@ public class DefaultIndexPacker IndexWriter w = null; try { - w = new IndexWriter( targetdir, false, new NexusLegacyAnalyzer(), true ); + w = new NexusIndexWriter( targetdir, new NexusLegacyAnalyzer(), true ); for ( int i = 0; i < r.maxDoc(); i++ ) { Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java?rev=1041505&r1=1041504&r2=1041505&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java Thu Dec 2 17:59:57 2010 @@ -350,7 +350,7 @@ public class DefaultIndexUpdater try { r = IndexReader.open( sourcedir ); - w = new IndexWriter( targetdir, false, new NexusAnalyzer(), true ); + w = new NexusIndexWriter( targetdir, new NexusAnalyzer(), true ); for ( int i = 0; i < r.maxDoc(); i++ ) { @@ -404,7 +404,7 @@ public class DefaultIndexUpdater try { // analyzer is unimportant, since we are not adding/searching to/on index, only reading/deleting - w = new IndexWriter( directory, new NexusAnalyzer() ); + w = new NexusIndexWriter( directory, new NexusAnalyzer(), true ); w.optimize(); Modified: maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java?rev=1041505&r1=1041504&r2=1041505&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java (original) +++ maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/Nexus3881NexusIndexerTest.java Thu Dec 2 17:59:57 2010 @@ -24,6 +24,7 @@ import junit.framework.Assert; import org.apache.lucene.search.BooleanClause.Occur; import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.Explanation; import org.apache.lucene.search.Query; public class Nexus3881NexusIndexerTest @@ -50,9 +51,18 @@ public class Nexus3881NexusIndexerTest bq.add( q1, Occur.SHOULD ); bq.add( q2, Occur.SHOULD ); - IteratorSearchResponse response = nexusIndexer.searchIterator( new IteratorSearchRequest( bq ) ); + IteratorSearchRequest request = new IteratorSearchRequest( bq ); + request.setLuceneExplain( true ); + + IteratorSearchResponse response = nexusIndexer.searchIterator( request ); Assert.assertEquals( "All artifacts has 'solution' in their GA!", 4, response.getTotalHits() ); + + // for (ArtifactInfo ai : response) { + // System.out.println(ai.toString()); + // System.out.println(ai.getAttributes().get( Explanation.class.getName() )); + // System.out.println(); + // } float firstRel = response.getResults().next().getLuceneScore();