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();