2010-10-12 15 views
5

Soy nuevo en Lucene, comencé a aprender la rama de la versión 3 y hay algo que no entiendo (obviamente porque no tengo experiencia en el tema).Lista de "tokens" en Lucene 3

En Lucene 2.9, si quisiera una lista de tokens, crearía una clase ArrayList of Token, ArrayList por ejemplo. Eso es bastante intuitivo para mí y el concepto de token es muy claro.

Ahora que el uso de la clase Token no se fomenta a favor de la API basada en atributos, ¿tengo que crear mi propia clase para encapsular los atributos que quiero? Si es así, ¿no es eso casi una recreación de la clase Token de Lucene?

Estoy haciendo una clase para probar analizadores, y tener una lista de tokens resultantes hace que sea más fácil de probar, supongo.

Cualquier ayuda sería apreciada;) ¡Gracias!

Respuesta

2

Según Token Javadoc, "Aunque no es necesario y para usar Token más, con la nueva API TokenStream se puede usar como una clase de conveniencia que implementa todos los Atributos, lo que es especialmente útil para cambiar fácilmente de la antigua a la nueva API de TokenStream ".

Le sugiero que siga usando un Token. Se corresponde con la descripción anterior.

+0

Gracias, estaba malinterpretando las notas sobre la clase Token;) – Fabio

2

utilizar la clase TermAttribute:

TokenStream stream = analyzer.tokenStream("field", "text"); 
TermAttribute termAttr = stream.getAttribute(TermAttribute.class); 
while (stream.incrementToken()) { 
    String token = termAttr.term(); 
} 
+0

Gracias awsing, pero no responde a mi pregunta. Sé cómo obtener los atributos de un tokenstream, en el código solo obtiene termattribute, por lo que puede guardar cada término en una cadena [] y allí está su lista de tokens Pero en caso de que también quieras un atributo fuera de rango, entonces tienes 2 atributos y no puedes guardarlos en una cadena [], y mi pregunta está relacionada con eso ... la clase Token encapsula varios atributos en una misma estructura, y necesito hasta ahora, si en Lucene 3, dado que desalientan el uso de Token, ¿cuál es la solución recomendada para encapsular varios atributos en la misma estructura? – Fabio

+0

Aparentemente no hay ninguno, al menos no que yo sepa. Me sorprendió esta decisión también. Los desarrolladores de Lucene aparentemente favorecen la optimización sobre el diseño adecuado de API. –