WindowssearchSQL:LIKE语句中的分号导致exception(E_FAIL 0x80004005)

我正在查询关于我的ASP.NET Web应用程序中的一些文件的Windowssearch引擎。 我正在寻找所有标题包含string“IT”(除了其他条件,从下面的例子剥离)的文件。 我正在通过ADO.NET,所以我的代码看起来像这样(剥去了一些不重要的细节):

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”的最后一行引发exception。 如果我从LIKE语句中删除分号,所有的工作就像一个魅力,但显然我没有预期的结果,因为我真的只需要标题对应给定string的文档。

我试图search保留的字符和/或在WindowssearchSQL中转义,但没有运气。

任何想法?

感谢致敬,

克劳迪奥

我发现Windows Search API不支持Like运算符。