Windows Search SQL: LIKE语句中的分号导致异常(E_FAIL 0x80004005)



我正在查询windows搜索引擎关于我的ASP中的一些文档。. NET web应用程序。我正在寻找所有文档的标题包含字符串";IT"(除了其他条件之外,从下面的示例中剥离)。我要通过ADO。所以我的代码看起来像这样(去掉一些不重要的细节):

var connString = "Provider=Search.CollatorDSO;" + 
                 "Extended Properties='Application=Windows';";
var conn = new OleDbConnection(connString);
conn.Open();
StringWriter wSql = new StringWriter();
wSql.WriteLine("SELECT System.Title, System.Filename, System.Keywords, " + 
               "System.Size, System.ItemPathDisplay, System.ItemUrl, " +
               "System.Search.Rank, System.DateCreated, System.DateModified " + 
               "FROM SYSTEMINDEX WHERE System.Title LIKE '%; IT%'");
var cmd = new OleDbCommand(wSql.ToString(), conn);
var adapter = new OleDbDataAdapter(cmd);
var result = new DataSet();
adapter.Fill(result, "doc");  // <== HERE THE RUNTIME EXPLODES

当我运行这段代码时,在最后一行抛出一个异常,代码为"E_FAIL 0x80004005"。如果我从LIKE语句中删除分号,所有工作都像一个魅力,但显然我没有得到预期的结果,因为我真的真的只需要标题对应于给定字符串的文档。

我尝试在Windows Search SQL中搜索保留字符和/或转义,但没有运气。

任何想法?

Thanks and regards,

克劳迪奥。

我发现Windows Search API不支持Like操作符

最新更新