我正在从 vbscript 升级到 ASP.NET MVC 的项目中。它使用 Microsoft Index Server 在 Windows Server 2003 机器上索引 Word 和 PDF 文件。它只是使用“Provider=\”MSIDXS\”;Data Source=\“docSearch\”;”之类的连接字符串打开了一个 OleDbConnection。
经过一番研究,我了解到索引服务器已过时(“注意索引服务在 Windows XP 中已过时。相反,请使用 Windows 搜索。” - http://msdn.microsoft.com/en-us/library/ms690580) Windows Search 是继任者。
因此,在我的新 MVC 应用程序中,我尝试使用 OleDbConnection 连接字符串,例如“Provider=Search.CollatorDSO;Extended Properties=\”Application=Windows\“”。
我有一个接受格式化查询并执行搜索的方法 - 这是使用 OleDb 执行的查询:
string.Format("SELECT System.FileName FROM SystemIndex WHERE CONTAINS('{0}')", query)
现在,当我在测试类中调用我的方法时,它工作正常(即返回结果... myDataReader.HasRows 为真)。但是,当我从 MVC 控制器调用相同的方法时,它不会返回任何结果 - myDataReader.HasRows 为 false - 使用相同的查询。我的猜测与权限和 IIS 无法访问索引有关。如何让 IIS 访问索引?如何将索引公开给 ASP.NET 网页?如果 Index Server 已过时,并且 Windows Search 不支持此功能,我应该使用什么?