2009-08-12 20 views
5

データベースにクエリを実行して、SQL Server 2005から全文検索ノイズ/ストップワードのリストを取得することはできますか?クエリSQl Server 2005全文検索ノイズ/ストップワード

ノイズの単語が〜/ FTData/noiseEng.txtというテキストファイルに含まれていますが、このファイルにはアプリケーションからアクセスできないことにご注意ください。

私はsys.fulltext_ *テーブルを見てきましたが、これは言葉を持っていないようです。

答えて

2

これがSQL 2005年には不可能であることが表示されますが、SQL Server 2008の

Advanced Queries for Using SQL Server 2008 Full Text Search StopWords/StopLists

にこの次のクエリはSQL サーバーに同梱 ストップワードのすべてのリストを取得しています2008これはいい 改善がある、あなたは SQL Serverでこれを行うことはできません2005年

Stopwords and Stoplists - SQL Server 2008

SQL Server 2005のノイズワードは、 がストップワードに置き換えられました。データベース が 以前のリリースからのSQL Server 2008にアップグレードすると、ノイズワードファイル はもはやSQL Server 2008の で使用されていないが、ノイズワードファイルは は、FTDATA \ FTNoiseThesaurusBakフォルダに格納されています は後で更新するときに使用できます。 対応するSQL Serverを構築する 2008ストップリスト。 ノイズワードファイルを ストップリストにアップグレードする方法については、フルテキスト検索 を参照してください。

0

ノイズワードファイルを\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTDataからアプリにコピーしてノイズワードを除去します。

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 
+0

これはうまくいくかもしれませんが、私たちのアプリは通常はロックされているクライアントサーバー上で動作し、ファイルへのアクセスが制限されています。残念ながら、雑音の単語をコピーして貼り付けることは受け入れられないでしょう –