私は、Windows検索を使用して全文検索の結果を得るコードを探しています(デフォルトでVista、7および8で利用可能であるはずです)。Windowsの検索 - Cの全文検索#
ここではいくつかの質問を見つけましたが、msdnにはいくつかのテキストがありますが、正確なコードはありません。 Windows APIコードパック(Windows Searchへのインターフェイスの1つとして言及されているように)を試しましたが、フルテキストではなくファイル名に対してのみ結果が返されます。ここで
私は、Windows検索を使用して全文検索の結果を得るコードを探しています(デフォルトでVista、7および8で利用可能であるはずです)。Windowsの検索 - Cの全文検索#
ここではいくつかの質問を見つけましたが、msdnにはいくつかのテキストがありますが、正確なコードはありません。 Windows APIコードパック(Windows Searchへのインターフェイスの1つとして言及されているように)を試しましたが、フルテキストではなくファイル名に対してのみ結果が返されます。ここで
は、作業を行うコードである - の例では私はそれがデスクトップフォルダ内の単語「ダミー」の検索に作ら:
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();
デスクトップモードでWindows 8.1で動作します – slayernoah
単語の一部を探したい場合は、これは私にとっては役に立ちません。たとえば、文書に「ダミー」が含まれていて、上のコードを使用して「ダム」を検索したとします。ここでワイルドカードを使う方法は? '*'を追加するだけではうまくいかないようです。 – slayernoah
@slayernoahあなたは*検索を試みましたか?解決策ではありません – Kiquenet
はDSearchの例を見てみましょう。 Windows Search Code Samples
これはあなたが欲しいものです。
ありがとう、私はすでに解決策を見つけました。それは私が必要としたページの1つでしたが、それは十分ではありませんでした(SQLの例では、Windows SearchのSQL構文が説明されていませんでした。上記の私の答えで動作する完全なコードがあります。 –
MSサンプルダウンロードリンクオフライン:) – zozzancs
「FullText」とはどういう意味ですか? – Shaharyar
フルテキストは、ファイル名やそのプロパティだけでなく、Windowsの検索でドキュメントファイル(.txt、.doc、.docx、.pdfなど)のテキスト(コンテンツ)を検索することを意味します。 Windowsエクスプローラで検索すると可能ですので、可能でなければなりません。 –