我正在尝试使用Windows Search SQL Syntax以编程方式查询Windows搜索索引
我可以使用以下搜索查询在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*\"')";
请注意,要搜索的部分单词必须与通配符*一起包含在双引号中。