【发布时间】:2012-01-11 22:20:28
【问题描述】:
我正在尝试搜索远程文件共享(运行 windows server 2008 R2) 对于包含一些文本的文件。如果我试试这个,它工作正常:
SELECT System.FileName
FROM RemoteServer.SystemIndex
WHERE SCOPE='file://RemoteServer/FileShare'
我得到了很多结果。但是,一旦我尝试搜索一些文本,我就没有得到任何结果:
SELECT System.FileName
FROM RemoteServer.SystemIndex
WHERE SCOPE='file://RemoteServer/FileShare'
AND CONTAINS('a')
如果我在我的机器(Windows 7)上尝试它,它工作正常:
SELECT FileName
FROM SystemIndex
WHERE CONTAINS('a')
这是我用来搜索的 c# 代码:
string connectionString = "Provider=Search.CollatorDSO;Extended Properties=\"Application=Windows\"";
using (OleDbConnection myOleDbConnection = new OleDbConnection(connectionString))
{
myOleDbConnection.Open();
using (OleDbCommand myOleDbCommand = new OleDbCommand(sql, myOleDbConnection))
{
using (myDataReader = myOleDbCommand.ExecuteReader())
{
if (!myDataReader.HasRows)
{
System.Console.WriteLine("Query returned 0 rows!");
}
else
{
// Process results here
}
}
}
}
我尝试了以下方法:
- 重建索引
- 检查是否已在要索引的服务器上添加文件夹“FileShare”
- 检查了“文件类型”选项卡,勾选了正确的扩展名,并为这些扩展名选择了“索引属性和文件内容”
- 重新启动索引服务
- 重新启动服务器本身
无济于事。
还有其他建议吗?令人沮丧,因为我已经完成了 99% 的路程。整个 windows 桌面搜索似乎都不受支持,也许我应该把它装箱并使用其他东西?
【问题讨论】:
-
您是否在服务器本地运行查询以查看是否返回结果?您是在寻找没有空格或单个字符的字符串,还是在寻找句子或短语?未定义列的 CONTAINS 谓词也仅搜索文件的内容,不确定您是否有意这样做。
-
您也可以尝试重新排序您的 WHERE 子句以首先移动 CONTAINS 和 SCOPE 以查看这是否重要...