我编写了一个程序,该程序为Windows 2012 R2服务器上的文件共享提供了一个Web界面。在webapp中,我添加了查询在该服务器上运行的Windows搜索索引的功能,以便用户可以获得结果。以下是用于在索引中搜索的查询:
SELECT System.FileName, System.ItemPathDisplay, System.ItemType, System.Size, System.ItemDate, System.DateModified
FROM myserver.systemindex
WHERE SCOPE='file://myserver/myshare' AND System.FileName LIKE '%<somevalue>%'
适用于大多数情况,但文件名中的数字除外。似乎只有任何一组人数作为一个整体。例如,如果我有一个名为&#34; G-5687-R2.txt&#34;的文件,则搜索&#34; G&#34;,&#34; G-5687&#34;,&#34 ; 5687&#34;或&#34; 2&#34;将返回文件。但是,搜索&#34; G-56&#34;或&#34; 56&#34;没有回报。表演&#34; 56&#34;在Windows资源管理器中搜索会返回文档,因此我认为我的查询中缺少某些内容。
完整的代码如下:
string searchLocation = "file://myserver/myshare";
string searchString = "56";
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Search.CollatorDSO.1;Extended Properties='Application=Windows';";
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = string.Format("SELECT System.FileName, System.ItemPathDisplay, System.ItemType, System.Size, System.ItemDate, System.DateModified FROM " +
" myserver.systemindex WHERE SCOPE='{1}' AND" +
" System.FileName LIKE " + " '%{0}%'"
, searchString, searchLocation);
conn.Open();
OleDbDataReader rdr = cmd.ExecuteReader();