You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by oc...@apache.org on 2009/02/02 09:04:41 UTC
svn commit: r739939 - in
/archiva/branches/archiva-nexus-indexer/archiva-modules:
archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/
archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/
archiva-web/ar...
Author: oching
Date: Mon Feb 2 08:04:40 2009
New Revision: 739939
URL: http://svn.apache.org/viewvc?rev=739939&view=rev
Log:
[MRM-749]
o implement search within search results in nexus impl of search
Modified:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/RepositorySearch.java
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
Modified: archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java?rev=739939&r1=739938&r2=739939&view=diff
==============================================================================
--- archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java (original)
+++ archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java Mon Feb 2 08:04:40 2009
@@ -63,9 +63,10 @@
}
/**
- * @see RepositorySearch#search(String, List, String, SearchResultLimits)
+ * @see RepositorySearch#search(String, List, String, SearchResultLimits, List)
*/
- public SearchResults search( String principal, List<String> selectedRepos, String term, SearchResultLimits limits )
+ public SearchResults search( String principal, List<String> selectedRepos, String term, SearchResultLimits limits,
+ List<String> previousSearchTerms )
throws RepositorySearchException
{
addIndexingContexts( selectedRepos );
@@ -75,15 +76,27 @@
// - regular search
// - searching within search results
// 3. multiple repositories
-
+
BooleanQuery q = new BooleanQuery();
- q.add( indexer.constructQuery( ArtifactInfo.GROUP_ID, term ), Occur.SHOULD );
- q.add( indexer.constructQuery( ArtifactInfo.ARTIFACT_ID, term ), Occur.SHOULD );
- q.add( indexer.constructQuery( ArtifactInfo.VERSION, term ), Occur.SHOULD );
- q.add( indexer.constructQuery( ArtifactInfo.PACKAGING, term ), Occur.SHOULD );
+ if( previousSearchTerms == null || previousSearchTerms.isEmpty() )
+ {
+ constructQuery( term, q );
+ }
+ else
+ {
+ for( String previousTerm : previousSearchTerms )
+ {
+ BooleanQuery iQuery = new BooleanQuery();
+ constructQuery( previousTerm, iQuery );
- // TODO: what about class & package?
-
+ q.add( iQuery, Occur.MUST );
+ }
+
+ BooleanQuery iQuery = new BooleanQuery();
+ constructQuery( term, iQuery );
+ q.add( iQuery, Occur.MUST );
+ }
+
try
{
FlatSearchRequest request = new FlatSearchRequest( q );
@@ -123,6 +136,15 @@
}
}
}
+
+ private void constructQuery( String term, BooleanQuery q )
+ {
+ q.add( indexer.constructQuery( ArtifactInfo.GROUP_ID, term ), Occur.SHOULD );
+ q.add( indexer.constructQuery( ArtifactInfo.ARTIFACT_ID, term ), Occur.SHOULD );
+ q.add( indexer.constructQuery( ArtifactInfo.VERSION, term ), Occur.SHOULD );
+ q.add( indexer.constructQuery( ArtifactInfo.PACKAGING, term ), Occur.SHOULD );
+ q.add( indexer.constructQuery( ArtifactInfo.NAMES, term ), Occur.SHOULD );
+ }
/**
* @see RepositorySearch#search(String, SearchFields, SearchResultLimits)
Modified: archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/RepositorySearch.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/RepositorySearch.java?rev=739939&r1=739938&r2=739939&view=diff
==============================================================================
--- archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/RepositorySearch.java (original)
+++ archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/RepositorySearch.java Mon Feb 2 08:04:40 2009
@@ -33,9 +33,11 @@
* @param selectedRepos
* @param term
* @param limits
+ * @param previousSearchTerms
* @return
*/
- SearchResults search( String principal, List<String> selectedRepos, String term, SearchResultLimits limits )
+ SearchResults search( String principal, List<String> selectedRepos, String term, SearchResultLimits limits,
+ List<String> previousSearchTerms )
throws RepositorySearchException;
/**
Modified: archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java?rev=739939&r1=739938&r2=739939&view=diff
==============================================================================
--- archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java (original)
+++ archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java Mon Feb 2 08:04:40 2009
@@ -153,7 +153,7 @@
archivaConfigControl.replay();
- SearchResults results = search.search( "user", selectedRepos, "archiva-search", null );
+ SearchResults results = search.search( "user", selectedRepos, "archiva-search", null, null );
archivaConfigControl.verify();
@@ -164,7 +164,7 @@
assertEquals( "org.apache.archiva", hit.getGroupId() );
assertEquals( "archiva-search", hit.getArtifactId() );
assertEquals( "1.0", hit.getVersions().get( 0 ) );
-
+
archivaConfigControl.reset();
// search groupId
@@ -172,7 +172,7 @@
archivaConfigControl.replay();
- results = search.search( "user", selectedRepos, "org.apache.archiva", null );
+ results = search.search( "user", selectedRepos, "org.apache.archiva", null, null );
archivaConfigControl.verify();
@@ -196,7 +196,7 @@
archivaConfigControl.replay();
- SearchResults results = search.search( "user", selectedRepos, "org", limits );
+ SearchResults results = search.search( "user", selectedRepos, "org", limits, null );
archivaConfigControl.verify();
@@ -213,7 +213,7 @@
archivaConfigControl.replay();
- results = search.search( "user", selectedRepos, "org", limits );
+ results = search.search( "user", selectedRepos, "org", limits, null );
archivaConfigControl.verify();
@@ -241,7 +241,7 @@
archivaConfigControl.replay();
- SearchResults results = search.search( "user", selectedRepos, "archiva-search", null );
+ SearchResults results = search.search( "user", selectedRepos, "archiva-search", null, null );
archivaConfigControl.verify();
@@ -273,7 +273,7 @@
archivaConfigControl.replay();
- SearchResults results = search.search( "user", selectedRepos, "dfghdfkweriuasndsaie", null );
+ SearchResults results = search.search( "user", selectedRepos, "dfghdfkweriuasndsaie", null, null );
archivaConfigControl.verify();
@@ -291,7 +291,7 @@
archivaConfigControl.replay();
- SearchResults results = search.search( "user", selectedRepos, "org.apache.archiva", null );
+ SearchResults results = search.search( "user", selectedRepos, "org.apache.archiva", null, null );
assertNotNull( results );
assertEquals( 0, results.getTotalHits() );
@@ -301,7 +301,28 @@
public void testSearchWithinSearchResults()
throws Exception
{
-
+ List<String> selectedRepos = new ArrayList<String>();
+ selectedRepos.add( TEST_REPO_1 );
+
+ List<String> previousSearchTerms = new ArrayList<String>();
+ previousSearchTerms.add( "archiva-test" );
+
+ archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
+
+ archivaConfigControl.replay();
+
+ SearchResults results = search.search( "user", selectedRepos, "1.0", null, previousSearchTerms );
+
+ archivaConfigControl.verify();
+
+ assertNotNull( results );
+ assertEquals( 1, results.getTotalHits() );
+
+ SearchResultHit hit = results.getHits().get( 0 );
+ assertEquals( "org.apache.archiva", hit.getGroupId() );
+ assertEquals( "archiva-test", hit.getArtifactId() );
+ assertEquals( 1, hit.getVersions().size() );
+ assertEquals( "1.0", hit.getVersions().get( 0 ) );
}
public void testAdvancedSearch()
Modified: archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java?rev=739939&r1=739938&r2=739939&view=diff
==============================================================================
--- archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java (original)
+++ archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java Mon Feb 2 08:04:40 2009
@@ -265,7 +265,7 @@
//results = crossRepoSearch.searchForTerm( getPrincipal(), selectedRepos, q, limits );
try
{
- results = getNexusSearch().search( getPrincipal(), selectedRepos, q, limits );
+ results = getNexusSearch().search( getPrincipal(), selectedRepos, q, limits, null );
}
catch ( RepositorySearchException e )
{