palavras 2005 completa Text Search ruído / paragem de consulta SQL Server
-
13-09-2019 - |
Pergunta
É possível obter a lista de pesquisa de texto completo ruído / palavras de parada de SQL Server 2005, consultando o banco de dados?
Estou ciente de que as palavras de ruído estão em um arquivo de texto ~ / FTData / noiseEng.txt mas este arquivo não está acessível para a nossa aplicação.
Eu tenho olhada no sys.fulltext_ * mesas mas estes não parecem ter as palavras.
Solução
Parece que isso não é possível no SQL 2005, mas está em SQL Server 2008.
Esta próxima consulta obtém uma lista de todos os stopwords que acompanham o SQL Server 2008. Este é um bom melhoria, você não pode fazer isso em SQL Server 2005.
Stopwords e Stoplists - SQL Server 2008
SQL Server 2005 palavras de ruído têm sido substituído por stopwords. Quando um banco de dados é atualizado para SQL Server 2008 a partir de um versão anterior, os arquivos de palavras de ruído não são mais usados ??no SQL Server 2008. No entanto, os arquivos de palavras de ruído são armazenado no FTDATA \ FTNoiseThesaurusBak pasta, e você pode usá-los mais tarde, quando a atualização ou construção do correspondente SQL Server 2008 stoplists. Para obter informações sobre arquivos de atualização de palavras de ruído para stoplists, consulte Full-Text Search Upgrade.
Outras dicas
Eu só copiar o arquivo de palavras de ruído de \Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData
em meu aplicativo, e usá-lo para retirar palavras de ruído.
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