tokens tokenizer str separe separar recorrer que programa palabras ejemplo java lucene tokenize analyzer

separe - stringtokenizer java netbeans



¿Cómo usar un analizador Lucene para tokenizar una cadena? (2)

Por lo que sé, tienes que escribir el loop tú mismo. Algo como esto (tomado directamente de mi árbol fuente):

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; } }

¿Hay alguna forma sencilla en que pueda usar cualquier subclase del Analyzer de Lucene para analizar / convertir una String un String ?

Algo como:

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


Basado en la respuesta anterior, esto se modifica ligeramente para que funcione con Lucene 4.0.

public final class LuceneUtil { private LuceneUtil() {} public static List<String> tokenizeString(Analyzer analyzer, String string) { List<String> result = new ArrayList<String>(); try { TokenStream stream = analyzer.tokenStream(null, new StringReader(string)); stream.reset(); while (stream.incrementToken()) { result.add(stream.getAttribute(CharTermAttribute.class).toString()); } } catch (IOException e) { // not thrown b/c we''re using a string reader... throw new RuntimeException(e); } return result; } }