c# - Microsoft 桌面搜索 - 包含在 Windows Server 2008 上不返回结果

标签 c# sql wds

我正在尝试搜索远程文件共享(运行 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 桌面搜索似乎不受支持,也许我应该将它打包并使用其他东西?

最佳答案

尝试为搜索词声明一个 nvarchar 变量

DECLARE @SearchWord nvarchar(30) = 'a'

然后将您的代码修改为:

SELECT FileName

FROM SystemIndex

WHERE CONTAINS(@SearchWord)

此摘录来自 TechNet 上的 CONTAINS See TechNet

*contains_search_condition* 是 nvarchar。发生隐式转换 当另一种字符数据类型用作输入时。在下面的 例如,@SearchWord 变量,它被定义为 varchar(30), 在 CONTAINS 谓词中导致隐式转换。

关于c# - Microsoft 桌面搜索 - 包含在 Windows Server 2008 上不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8827546/

相关文章:

c# - C++ 引用与 C# 引用

mysql - 如何在不使用 top 或 last 函数的情况下获取 sqlyog 数据库中最后插入的列?

c# - Windows 桌面搜索不返回 QueryFocusedSummary

c# - 如何检测哪个窗口是前景窗口?

c# - 使用 Web 应用程序在 DocumentDB 中进行分页

mysql - 创建表作为查询结果

sql - 使数据库不应包含超过20个不同电话号码的sql语句

webpack-dev-server - Webpack 5 : why MiniCssExtractPlugin. 加载程序不允许 HMR 工作?

c# - WebException.Response.GetResponseStream() 限制为 65536 个字符