sql full-text-search sql-server-2008-r2 diacritics formsof

Búsqueda de texto completo de SQL Server 2008 R2 con FORMSOF y Accent Insensitive



full-text-search sql-server-2008-r2 (2)

Estoy usando MS SQL Server 2008 R2 con Full Text Search para buscar datos de texto almacenados en diferentes idiomas.

Estoy un poco confundido acerca de cómo el predicado CONTAINS funciona con acentos.

Cuando uso el siguiente predicado

CONTAINS([Text], @keywords , Language @language)

en un catálogo con ACCENT_SENSITIVITY = OFF los resultados de búsqueda son los mismos para, por ejemplo, ''Lächeln'' y ''lacheln'' cuando se especifica Alemania como idioma.

Pero si cambio el predicado para que se vea

CONTAINS([Text], FORMSOF(INFLECTIONAL, @keywords) , Language @language)

entonces los resultados son diferentes y me parece que la Insensibilidad al acento no funciona con FORMSOF

Intenté encontrar una respuesta en MSDN y Google, pero no encontré nada útil.

¿Alguien sabe por qué los resultados son diferentes?

¡Gracias!


Tengo entendido que estos tienen dos propósitos diferentes para encontrar coincidencias para una búsqueda de texto completo. Con un catálogo insensible a los acentos, se realiza una igualdad de caracteres simples para el término correspondiente, de modo que eñya = enya porque ''n'' se considera el equivalente insensible a los acentos de ''ñ''.

Con FORMSOF está solicitando que la búsqueda realice una operación de derivación en los términos para que los formularios verbales y sustantivos se busquen como términos adicionales en la búsqueda. por ejemplo, buscar ''pie'' incluiría ''pies'' y ''ejecutar'' incluiría ''ejecutar''.

Si el FORMSOF parece no funcionar fundamentalmente para sus valores, le recomendamos que se asegure de tener instalado el soporte de idiomas adecuado para los idiomas de texto completo. SELECT * FROM sys.fulltext_languages

Si no ha tenido la oportunidad de revisar MSDN, la documentación de SQL Word Breakers puede arrojar algo de luz sobre el comportamiento observado. http://msdn.microsoft.com/en-us/library/ms142509.aspx


FORMSOF corta signos diacríticos de Tu palabra:

SELECT * FROM sys.dm_fts_parser(N''FORMSOF(INFLECTIONAL, "Lächeln")'', 1031, 0, 1)

verifique la columna "display_term".