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 )
                 {