Search code examples
javalucenetokenizeanalyzer

How to use a Lucene Analyzer to tokenize a String?


Is there a simple way I could use any subclass of Lucene's Analyzer to parse/tokenize a String?

Something like:

String to_be_parsed = "car window seven";
Analyzer analyzer = new StandardAnalyzer(...);
List<String> tokenized_string = analyzer.analyze(to_be_parsed);

Solution

  • As far as I know, you have to write the loop yourself. Something like this (taken straight from my source tree):

    public final class LuceneUtils {
    
        public static List<String> parseKeywords(Analyzer analyzer, String field, String keywords) {
    
            List<String> result = new ArrayList<String>();
            TokenStream stream  = analyzer.tokenStream(field, new StringReader(keywords));
    
            try {
                while(stream.incrementToken()) {
                    result.add(stream.getAttribute(TermAttribute.class).term());
                }
            }
            catch(IOException e) {
                // not thrown b/c we're using a string reader...
            }
    
            return result;
        }  
    }