2

我编写了一个程序,它为 Windows 2012 R2 服务器上的文件共享提供一个 Web 界面。在 webapp 中,我添加了查询在该服务器上运行的 Windows Search 索引的功能,以便用户可以返回结果。以下是用于在索引中搜索的查询:

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>%'

适用于大多数情况,但文件名中的数字除外。似乎 any 仅将数字作为一个整体进行分组。例如,如果我有一个名为“G-5687-R2.txt”的文件,搜索“G”、“G-5687”、“5687”或“2”将返回该文档。但是,搜索“G-56”或“56”不会返回任何内容。在 Windows 资源管理器中执行“56”搜索确实会返回文档,所以我认为我的查询中缺少一些东西。

完整代码如下:

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();
4

0 回答 0