Pregunta

Por ejemplo, mi consulta es como 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 cuando se usa:

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

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

¿Fue útil?

Solución

El carácter # está indexado como puntuación y, por lo tanto, se ignora, por lo que parece que eliminaremos la letra C de nuestras listas de ignorados de indexación de palabras.

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

Analizar el uso de un idioma de separación de palabras diferente en la columna indexada, para que esos caracteres especiales no se ignoren.

EDITAR:También encontré esta informacion:

c# está indexado como c (si c no está en su lista de palabras irrelevantes, consulte más sobre las listas de palabras irrelevantes más adelante), pero C# está indexado como C# (en SQL 2005 y SQL 2000 que se ejecutan en Win2003 independientemente de si C o c están en su lista de palabras irrelevantes lista de palabras).No sólo C# se almacena como C#, sino también cualquier letra mayúscula seguida de #.Por el contrario, c++ (y cualquier otra letra minúscula seguida de ++) se indexa como c (independientemente de si c está en su lista de palabras irrelevantes).

Otros consejos

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

Para utilizar caracteres especialmente tratados como &, |, ^, #, @, $, (, ), en una consulta, escriba la consulta entre comillas (“).

Hasta donde yo sé, la búsqueda de texto completo en MSSQL También lo realiza el Servicio de Indexación, por lo que esto podría ayudar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top