2005 Completo di rumore Text Search / stop parole query di SQL Server
-
13-09-2019 - |
Domanda
E 'possibile ottenere l'elenco di continuo rumore Text Search / stop parole da SQL Server 2005 interrogando il database?
Sono consapevole del fatto che le parole di rumore sono in un file di testo ~ / FTData / noiseEng.txt, ma questo file non è accessibile alla nostra applicazione.
Ho cerca nella sys.fulltext_ * tabelle ma queste non sembrano avere le parole.
Soluzione
Sembra che questo non è possibile in SQL Server 2005, ma è in SQL Server 2008.
query avanzate per l'utilizzo di SQL Server 2008 Full Text Search Stopword / StopLists
Questa query successiva ottiene un elenco di tutti le stopword forniti con SQL Server 2008. Questo è un bel miglioramento, non è possibile fare questo in SQL Server 2005.
stopword e Stoplists - SQL Server 2008
SQL Server 2005 parole non significative sono state sostituito da stopword. Quando un database viene aggiornato a SQL Server 2008 da un versione precedente, i file di parola non significativa non sono più utilizzati in SQL Server 2008. Tuttavia, i file di parola non significativa sono memorizzato nella FTDATA \ FTNoiseThesaurusBak cartella e si li possono utilizzare in seguito per l'aggiornamento o costruire il corrispondente SQL Server 2008 stoplists. Per informazioni su l'aggiornamento dei file di parola non significativa per stoplists, vedi ricerca full-text Aggiornamento.
Altri suggerimenti
I basta copiare il rumore file di parole da \Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData
nella mia app, e lo uso per mettere a nudo le parole non significative.
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