]> source.dussan.org Git - archiva.git/commitdiff
Added custom artifact analyzer
authorEdwin L. Punzalan <epunzalan@apache.org>
Fri, 23 Dec 2005 03:35:42 +0000 (03:35 +0000)
committerEdwin L. Punzalan <epunzalan@apache.org>
Fri, 23 Dec 2005 03:35:42 +0000 (03:35 +0000)
git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@358691 13f79535-47bb-0310-9956-ffa450edef68

maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexer.java
maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexAnalyzer.java [new file with mode: 0644]

index 41f8494b43ddbbe8db1ca9f90721d64f596faf58..d71a5040d90841ebd9ce1e7f9d983ff3bd955543 100644 (file)
@@ -22,7 +22,7 @@ import java.io.IOException;
 import java.util.Collection;
 
 import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.analysis.SimpleAnalyzer;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 
@@ -126,7 +126,7 @@ public abstract class AbstractRepositoryIndexer
 
     protected Analyzer getAnalyzer()
     {
-        return new StandardAnalyzer();
+        return new ArtifactRepositoryIndexAnalyzer( new SimpleAnalyzer() );
     }
 
     protected void validateIndex()
diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexAnalyzer.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexAnalyzer.java
new file mode 100644 (file)
index 0000000..1be1c17
--- /dev/null
@@ -0,0 +1,78 @@
+package org.apache.maven.repository.indexing;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Reader;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.CharTokenizer;
+import org.apache.lucene.analysis.TokenStream;
+
+/**
+ *
+ * @author Edwin Punzalan
+ */
+public class ArtifactRepositoryIndexAnalyzer
+    extends Analyzer
+{
+    private Analyzer defaultAnalyzer;
+
+    public ArtifactRepositoryIndexAnalyzer( Analyzer defaultAnalyzer )
+    {
+        this.defaultAnalyzer = defaultAnalyzer;
+    }
+
+    public TokenStream tokenStream(String fieldName, Reader reader)
+    {
+        TokenStream tokenStream;
+
+        if ( "version".equals( fieldName ) )
+        {
+            tokenStream = new VersionTokenizer( reader );
+        }
+        else
+        {
+            tokenStream = defaultAnalyzer.tokenStream( fieldName, reader );
+        }
+
+        return tokenStream;
+    }
+
+    private class VersionTokenizer
+        extends CharTokenizer
+    {
+        public VersionTokenizer( Reader reader )
+        {
+            super( reader );
+        }
+
+        protected boolean isTokenChar(char param)
+        {
+            boolean token;
+
+            switch( param )
+            {
+                case '.': token = false; break;
+                case '-': token = false; break;
+                default:
+                    token = true;
+            }
+
+            return token;
+        }
+    }
+}