001    package railo.runtime.search.lucene2.analyzer;
002    
003    import java.io.Reader;
004    
005    import org.apache.lucene.analysis.Analyzer;
006    import org.apache.lucene.analysis.TokenStream;
007    import org.apache.lucene.analysis.snowball.SnowballAnalyzer;
008    
009    
010    /**
011     * <p>Analyzer for Portuguese language</p>
012     * <p><a href="PortugueseAnalyzer.java.html"><i>View Source</i></a></p>
013     * <p/>
014     *
015     * @author Andrey Grebnev <a href="mailto:andrey.grebnev@blandware.com">&lt;andrey.grebnev@blandware.com&gt;</a>
016     * @version $Revision: 1.3 $ $Date: 2005/02/24 19:51:22 $
017     */ 
018    public final class PortugueseAnalyzer extends Analyzer {
019    
020            private static SnowballAnalyzer analyzer;
021    
022            private String PORTUGUESE_STOP_WORDS[] = {
023    
024                    "a", "ainda", "alem", "ambas", "ambos", "antes",
025                    "ao", "aonde", "aos", "apos", "aquele", "aqueles",
026                    "as", "assim", "com", "como", "contra", "contudo",
027                    "cuja", "cujas", "cujo", "cujos", "da", "das", "de",
028                    "dela", "dele", "deles", "demais", "depois", "desde",
029                    "desta", "deste", "dispoe", "dispoem", "diversa",
030                    "diversas", "diversos", "do", "dos", "durante", "e",
031                    "ela", "elas", "ele", "eles", "em", "entao", "entre",
032                    "essa", "essas", "esse", "esses", "esta", "estas",
033                    "este", "estes", "ha", "isso", "isto", "logo", "mais",
034                    "mas", "mediante", "menos", "mesma", "mesmas", "mesmo",
035                    "mesmos", "na", "nas", "nao", "nas", "nem", "nesse", "neste",
036                    "nos", "o", "os", "ou", "outra", "outras", "outro", "outros",
037                    "pelas", "pelas", "pelo", "pelos", "perante", "pois", "por",
038                    "porque", "portanto", "proprio", "propios", "quais", "qual",
039                    "qualquer", "quando", "quanto", "que", "quem", "quer", "se",
040                    "seja", "sem", "sendo", "seu", "seus", "sob", "sobre", "sua",
041                    "suas", "tal", "tambem", "teu", "teus", "toda", "todas", "todo",
042                    "todos", "tua", "tuas", "tudo", "um", "uma", "umas", "uns"};
043    
044            /**
045             * Creates new instance of SpanishAnalyzer
046             */
047            public PortugueseAnalyzer() {
048                    analyzer = new SnowballAnalyzer("Portuguese", PORTUGUESE_STOP_WORDS);
049            }
050    
051            public PortugueseAnalyzer(String stopWords[]) {
052                    analyzer = new SnowballAnalyzer("Portuguese", stopWords);
053            }
054    
055            @Override
056        public TokenStream tokenStream(String fieldName, Reader reader) {
057                    return analyzer.tokenStream(fieldName, reader);
058            }
059    }