2013-06-30 14 views
18

私は、Windows検索を使用して全文検索の結果を得るコードを探しています(デフォルトでVista、7および8で利用可能であるはずです)。Windowsの検索 - Cの全文検索#

ここではいくつかの質問を見つけましたが、msdnにはいくつかのテキストがありますが、正確なコードはありません。 Windows APIコードパック(Windows Searchへのインターフェイスの1つとして言及されているように)を試しましたが、フルテキストではなくファイル名に対してのみ結果が返されます。ここで

+0

「FullText」とはどういう意味ですか? – Shaharyar

+1

フルテキストは、ファイル名やそのプロパティだけでなく、Windowsの検索でドキュメントファイル(.txt、.doc、.docx、.pdfなど)のテキスト(コンテンツ)を検索することを意味します。 Windowsエクスプローラで検索すると可能ですので、可能でなければなりません。 –

答えて

27

は、作業を行うコードである - の例では私はそれがデスクトップフォルダ内の単語「ダミー」の検索に作ら:

string connectionString = "Provider=Search.CollatorDSO;Extended Properties=\"Application=Windows\""; 
OleDbConnection connection = new OleDbConnection(connectionString); 

string query = @"SELECT System.ItemName FROM SystemIndex " + 
    @"WHERE scope ='file:" + System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "' and FREETEXT('dummy')"; 
OleDbCommand command = new OleDbCommand(query, connection); 
connection.Open(); 

List<string> result = new List<string>(); 

OleDbDataReader reader = command.ExecuteReader(); 
while (reader.Read()) 
{ 
    result.Add(reader.GetString(0)); 
} 

connection.Close(); 
+1

デスクトップモードでWindows 8.1で動作します – slayernoah

+0

単語の一部を探したい場合は、これは私にとっては役に立ちません。たとえば、文書に「ダミー」が含まれていて、上のコードを使用して「ダム」を検索したとします。ここでワイルドカードを使う方法は? '*'を追加するだけではうまくいかないようです。 – slayernoah

+0

@slayernoahあなたは*検索を試みましたか?解決策ではありません – Kiquenet

1

はDSearchの例を見てみましょう。 Windows Search Code Samples

これはあなたが欲しいものです。

+0

ありがとう、私はすでに解決策を見つけました。それは私が必要としたページの1つでしたが、それは十分ではありませんでした(SQLの例では、Windows SearchのSQL構文が説明されていませんでした。上記の私の答えで動作する完全なコードがあります。 –

+2

MSサンプルダウンロードリンクオフライン:) – zozzancs