Pourquoi l'indexation de texte intégral SQL ne renvoie-t-elle pas les résultats pour les mots contenant # ?

StackOverflow https://stackoverflow.com/questions/1042

Question

Par exemple, ma requête ressemble à la suivante avec SQL Server 2005 :

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

J'ai un index de texte intégral défini pour utiliser la colonne SearchField qui renvoie les résultats lors de l'utilisation :

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

Je pense que # est une lettre spéciale, alors comment permettre à FREETEXT de fonctionner correctement pour la requête ci-dessus ?

Était-ce utile?

La solution

Le caractère # est indexé comme signe de ponctuation et donc ignoré. Il semble donc que nous allons supprimer la lettre C de nos listes d'indexation de mots ignorés.

Je l'ai testé localement après avoir fait cela et reconstruit les index et j'obtiens des résultats !

Envisagez d'utiliser un langage de coupe de mots différent sur la colonne indexée, afin que ces caractères spéciaux ne soient pas ignorés.

MODIFIER:j'ai aussi trouvé cette information:

c# est indexé comme c (si c n'est pas dans votre liste de mots bruyants, consultez plus d'informations sur les listes de mots bruyants plus tard), mais C# est indexé comme C# (dans SQL 2005 et SQL 2000 fonctionnant sur Win2003, que C ou c soit dans votre bruit liste de mots).Ce n'est pas seulement C# qui est stocké en C#, mais toute lettre majuscule suivie de #.À l’inverse, c++ (et toute autre lettre minuscule suivie d’un ++) est indexé comme c (que c soit ou non dans votre liste de mots parasites).

Autres conseils

Citant une page d'aide très répliquée sur le langage de requête du service d'indexation :

Pour utiliser des caractères spécialement traités tels que &, |, ^, #, @, $, (, ), dans une requête, placez votre requête entre guillemets («).

Autant que je sache, la recherche en texte intégral dans MSSQL est également effectué par le service d'indexation, cela pourrait donc aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top