3

Windows Search SQL 構文を使用してプログラムで Windows Search インデックスをクエリしようとしています。

以下の検索クエリを使用して、C# winforms アプリケーションでファイルの内容を検索できます。

string strSearchQuery =
    "SELECT System.ItemName FROM SystemIndex " +
    "WHERE scope ='file:" + @"C:\myfolder\" + 
    "' and FREETEXT('dummy')";

問題:ただし、このクエリを使用してファイル コンテンツ内の単語の一部を検索することはできません。

例: ファイル (.txt ファイルなど) に "abcd" というテキストが含まれている場合、 を検索するとFREETEXT('ab')、そのファイルは表示されません。

私は使用してみました:

  • FREETEXT('ab')
  • FREETEXT('*ab*')
  • FREETEXT('\"ab\"')
  • FREETEXT('\"*ab*\"')
  • FREETEXT('*\"ab\"*')
  • FREETEXT('ab*')
  • FREETEXT('\"*ab*\"')
  • FREETEXT('\"ab\"*')

CONTAINSの代わりに上記の組み合わせを使用してみましたFREETEXT

Windows検索でab直接検索すると、テキストを持つファイルが表示されます

このクエリを変更して、ファイルの内容の単語の一部を検索するにはどうすればよいですか? 助けてください!

4

3 に答える 3

3

FREETEXT() はワイルドカードをサポートしていません。代わりに CONTAINS() を使用してください。

string query = 
   "SELECT System.ItemName, System.ItemUrl FROM SystemIndex " +
   "WHERE scope ='file:D:\MyFolder' and CONTAINS('\"dumm*\"')";

検索する部分的な単語は、ワイルドカード文字 * と共に二重引用符で囲む必要があることに注意してください。

于 2017-02-25T21:36:20.930 に答える
0

ワイルドカード文字は%であるため、クエリは次のようになります。

string strSearchQuery =
    "SELECT System.ItemName FROM SystemIndex " +
    "WHERE scope ='file:" + @"C:\myfolder\" + 
    "' and FREETEXT(%'dummy'%)";

編集 :

 string strSearchQuery =
        "SELECT System.ItemName FROM SystemIndex " +
        "WHERE scope ='file:" + @"C:\myfolder\" + 
        "' and FREETEXT('%dummy%')";
于 2016-05-11T22:14:11.377 に答える