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