your indexes index how full enable sql sql-server sql-server-2005 indexing full-text-search

indexes - how to use full text search in sql server 2008



¿Por qué la indexación de texto completo de SQL no arroja resultados para las palabras que contienen#? (2)

Por ejemplo, mi consulta es similar a la siguiente usando SQL Server 2005:

SELECT * FROM Table WHERE FREETEXT(SearchField, ''c#'')

Tengo un índice de texto completo definido para usar la columna SearchField que devuelve resultados al usar:

SELECT * FROM Table WHERE SearchField LIKE ''%c#%''

Creo que # es una letra especial, entonces, ¿cómo permito que FREETEXT funcione correctamente para la consulta anterior?


El # char se indexa como puntuación y, por lo tanto, se ignora, por lo que parece que eliminaremos la letra C de las listas de ignorar de indexación de palabras.

¡Lo probé localmente después de hacer eso y reconstruir los índices y obtengo resultados!

Considerar el uso de un diferente lenguaje separador de palabras en la columna indexada, para que esos caracteres especiales no sean ignorados.

EDITAR: También encontré esta información :

c # está indexado como c (si c no está en su lista de palabras irrelevantes, vea más en las listas de palabras irrelevantes), pero C # está indexado como C # (en SQL 2005 y SQL 2000 ejecutándose en Win2003 independientemente de si C o c está en su ruido lista de palabras). No es solo C # que se almacena como C #, sino cualquier letra mayúscula seguida de #. Por el contrario, c ++ (y cualquier otra letra de recuadro inferior seguida de un ++) se indexa como c (independientemente de si c está en su lista de palabras de ruido).


Citando una página de ayuda muy replicada sobre el lenguaje de consulta del Servicio de Index Server:

Para usar caracteres especialmente tratados como &, |, ^, #, @, $, (,), en una consulta, encierre su consulta entre comillas (").

Por lo que yo sé, la búsqueda de texto completo en MSSQL también es realizada por el servicio de indexación, por lo que podría ser útil.