Question

Est-il possible d'obtenir la liste du bruit recherche en texte intégral / arrêt mots de SQL Server 2005 en interrogeant la base de données?

Je suis conscient que les mots de bruit sont dans un fichier texte ~ / FTData / noiseEng.txt mais ce fichier est accessible à notre application.

Je l'ai regard sur le sys.fulltext_ * tables mais ceux-ci ne semblent pas avoir les mots.

Était-ce utile?

La solution

Il semble que cela est impossible dans SQL 2005, mais est dans SQL Server 2008.

Requêtes avancées pour l'utilisation de SQL Server 2008 texte complet Recherche Mots vides / StopLists

  

Cette requête suivante obtient une liste de tous   les mots vides qui sont livrés avec SQL   Server 2008. Ceci est une belle   amélioration, vous ne pouvez pas le faire en   SQL Server 2005.

et Stoplists mots vides - SQL Server 2008

  

SQL Server 2005 mots de bruit ont été   remplacé par les mots vides. Lorsqu'une base de données   est mis à niveau vers SQL Server 2008 à partir d'un   version précédente, les fichiers mot de bruit   ne sont plus utilisés dans SQL Server 2008.   Cependant, les fichiers mot de bruit sont   stocké dans le FTDATA \   dossier FTNoiseThesaurusBak, et vous   peut les utiliser plus tard lors de la mise à jour ou   la construction de SQL Server correspondant   2008 stoplists. Pour plus d'informations sur les   la mise à niveau des fichiers mot de bruit   stoplists, voir texte intégral Recherche   Mettre à niveau.

Autres conseils

Je copie le fichier de mots de bruit \Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData dans mon application, et l'utiliser pour dépouiller les mots de bruit.

    Public Function StripNoiseWords(ByVal s As String) As String
        Dim NoiseWords As String = ReadFile("/Standard/Core/Config/noiseENU.txt").Trim
        Dim NoiseWordsRegex As String = Regex.Replace(NoiseWords, "\s+", "|") ' about|after|all|also etc.
        NoiseWordsRegex = String.Format("\s?\b(?:{0})\b\s?", NoiseWordsRegex)
        Dim Result As String = Regex.Replace(s, NoiseWordsRegex, " ", RegexOptions.IgnoreCase) ' replace each noise word with a space
        Result = Regex.Replace(Result, "\s+", " ") ' eliminate any multiple spaces
        Return Result
    End Function
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top