¿Cómo hacer una búsqueda de texto completo usando Grails Searchable Plugin insensible a los acentos?Búsqueda insensible a los acentos en Grails
6
A
Respuesta
5
que han resuelto este problema con la ayuda de Peter Ledbrook's post, sin embargo se necesita un poco de esfuerzo:
Desde último plugin de búsqueda utiliza Lucene 2.4.1 que no contiene ASCIIFoldingFilter (disponible desde 2.9.0) y ISOLatin1AccentFilter no lo hace apoyar muchos idiomas que he creado filtro personalizado para stripping accents:
import java.text.Normalizer
import org.apache.lucene.analysis.Token
import org.apache.lucene.analysis.TokenFilter
import org.apache.lucene.analysis.TokenStream
class StripAccentsFilter extends TokenFilter {
StripAccentsFilter(TokenStream input) {
super(input)
}
public final Token next(Token reusableToken) {
assert reusableToken
Token nextToken = input.next(reusableToken)
if (nextToken) {
nextToken.setTermBuffer(Normalizer.normalize(nextToken.termBuffer() as String, Normalizer.Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", ""))
return nextToken
}
return null
}
}
y correspondiente proveedor de filtro:
import org.apache.lucene.analysis.TokenStream
import org.compass.core.config.CompassSettings
import org.compass.core.lucene.engine.analyzer.LuceneAnalyzerTokenFilterProvider
class StripAccentsFilterProvider implements LuceneAnalyzerTokenFilterProvider {
public void configure(CompassSettings paramCompassSettings) {
}
public TokenStream createTokenFilter(TokenStream paramTokenStream) {
return new StripAccentsFilter(paramTokenStream)
}
}
Ahora todo lo que necesita hacer es registrar ese proveedor de filtro en la configuración del plug-in de búsqueda (griales-app/conf/Searchable.groovy):
compassSettings = [
'compass.engine.analyzer.default.filters': 'stripAccents',
'compass.engine.analyzer.search.filters': 'stripAccents',
'compass.engine.analyzerfilter.stripAccents.type': 'StripAccentsFilterProvider'
]
Cuestiones relacionadas
- 1. Pregunta de búsqueda insensible a los acentos en MySQL
- 2. Regex insensible a los acentos?
- 3. Clasificación insensible a los acentos en MySQL
- 4. Búsqueda insensible a mayúsculas y minúsculas en grails
- 5. Comparación de cadenas insensibles a los acentos?
- 6. Ignore los acentos usando la búsqueda elástica y el neumático
- 7. MySQL Insensible a las mayúsculas pero sensible a los acentos Clave única UTF8
- 8. SOLR Búsqueda insensible a mayúsculas/minúsculas
- 9. Caso insensible búsqueda variedad
- 10. Búsqueda insensible a mayúsculas/minúsculas usando Hibernate
- 11. Búsqueda de lista insensible a mayúsculas/minúsculas
- 12. JavaScript: búsqueda insensible a mayúsculas/minúsculas
- 13. C# Cómo reemplazar una cadena insensible a los acentos con regex?
- 14. Búsqueda de cadenas de Java ignorando acentos
- 15. grails paginación de los resultados de búsqueda
- 16. Búsqueda insensible a mayúsculas y minúsculas de palabras en mongoid
- 17. Búsqueda insensible a mayúsculas y minúsculas en Sybase
- 18. Búsqueda insensible a mayúsculas o minúsculas en Mongo
- 19. Búsqueda insensible a mayúsculas y minúsculas con $ en
- 20. Búsqueda insensible a mayúsculas y minúsculas en el campo varbinary?
- 21. ¿Cómo puedo hacer una búsqueda insensible a los acentos en Postgres 8.3.x con una base de datos en utf-8?
- 22. Búsqueda de clave insensible a mayúsculas/minúsculas de MongoDB
- 23. caso vim búsqueda insensible sensible reemplazar
- 24. búsqueda insensible a mayúsculas y minúsculas de MySQL?
- 25. Plugin de búsqueda de Grails
- 26. ¿Búsqueda del diccionario insensible a mayúsculas y minúsculas?
- 27. ¿Cómo hacer una insensible a insensibles a mayúsculas y minúsculas y sin acentos en Oracle 10gR2 y JPA?
- 28. Eliminar acentos de un QString
- 29. solicitud de complemento de búsqueda de grails
- 30. Convierta los acentos a HTML, pero ignore las etiquetas