001    package railo.runtime.search.lucene2.analyzer;
002    
003    
004    import java.io.Reader;
005    
006    import org.apache.lucene.analysis.Analyzer;
007    import org.apache.lucene.analysis.TokenStream;
008    import org.apache.lucene.analysis.snowball.SnowballAnalyzer;
009    
010    
011    /**
012     * <p>Analyzer for Spanish language</p>
013     * <p><a href="SpanishAnalyzer.java.html"><i>View Source</i></a></p>
014     * <p/>
015     *
016     * @author Andrey Grebnev <a href="mailto:andrey.grebnev@blandware.com">&lt;andrey.grebnev@blandware.com&gt;</a>
017     * @version $Revision: 1.2 $ $Date: 2005/02/24 19:51:22 $
018     */
019    public final class SpanishAnalyzer extends Analyzer {
020    
021            private static SnowballAnalyzer analyzer;
022    
023            private String SPANISH_STOP_WORDS[] = {
024    
025                    "un", "una", "unas", "unos", "uno", "sobre", "todo", "tambien", "tras",
026                    "otro", "algun", "alguno", "alguna",
027    
028                    "algunos", "algunas", "ser", "es", "soy", "eres", "somos", "sois", "estoy",
029                    "esta", "estamos", "estais",
030    
031                    "estan", "en", "para", "atras", "porque", "por que", "estado", "estaba",
032                    "ante", "antes", "siendo",
033    
034                    "ambos", "pero", "por", "poder", "puede", "puedo", "podemos", "podeis",
035                    "pueden", "fui", "fue", "fuimos",
036    
037                    "fueron", "hacer", "hago", "hace", "hacemos", "haceis", "hacen", "cada",
038                    "fin", "incluso", "primero",
039    
040                    "desde", "conseguir", "consigo", "consigue", "consigues", "conseguimos",
041                    "consiguen", "ir", "voy", "va",
042    
043                    "vamos", "vais", "van", "vaya", "bueno", "ha", "tener", "tengo", "tiene",
044                    "tenemos", "teneis", "tienen",
045    
046                    "el", "la", "lo", "las", "los", "su", "aqui", "mio", "tuyo", "ellos",
047                    "ellas", "nos", "nosotros", "vosotros",
048    
049                    "vosotras", "si", "dentro", "solo", "solamente", "saber", "sabes", "sabe",
050                    "sabemos", "sabeis", "saben",
051    
052                    "ultimo", "largo", "bastante", "haces", "muchos", "aquellos", "aquellas",
053                    "sus", "entonces", "tiempo",
054    
055                    "verdad", "verdadero", "verdadera", "cierto", "ciertos", "cierta",
056                    "ciertas", "intentar", "intento",
057    
058                    "intenta", "intentas", "intentamos", "intentais", "intentan", "dos", "bajo",
059                    "arriba", "encima", "usar",
060    
061                    "uso", "usas", "usa", "usamos", "usais", "usan", "emplear", "empleo",
062                    "empleas", "emplean", "ampleamos",
063    
064                    "empleais", "valor", "muy", "era", "eras", "eramos", "eran", "modo", "bien",
065                    "cual", "cuando", "donde",
066    
067                    "mientras", "quien", "con", "entre", "sin", "trabajo", "trabajar",
068                    "trabajas", "trabaja", "trabajamos",
069    
070                    "trabajais", "trabajan", "podria", "podrias", "podriamos", "podrian",
071                    "podriais", "yo", "aquel", "mi",
072    
073                    "de", "a", "e", "i", "o", "u"};
074    
075            /**
076             * Creates new instance of SpanishAnalyzer
077             */
078            public SpanishAnalyzer() {
079                    analyzer = new SnowballAnalyzer("Spanish", SPANISH_STOP_WORDS);
080            }
081    
082            public SpanishAnalyzer(String stopWords[]) {
083                    analyzer = new SnowballAnalyzer("Spanish", stopWords);
084            }
085    
086            public TokenStream tokenStream(String fieldName, Reader reader) {
087                    return analyzer.tokenStream(fieldName, reader);
088            }
089    }