文件内容中单词/子字符串的*部分*的Windows搜索查询



我正在尝试使用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时,它会显示具有文本的文件

如何修改此查询以在文件内容中搜索单词的一部分?请帮忙!

FREETEXT()不支持通配符。请改用CONTAINS()。

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

请注意,要搜索的偏旁单词必须包含在双引号内,并带有通配符*字符。

通配符是%,因此您的查询应该如下所示:

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%')";

有一个COP_VALUE_CONTAINS运算符。SQL符号为~=或~~。例如系统。全文:~="abc"。

相关内容

  • 没有找到相关文章

最新更新