【问题标题】:Microsoft Desktop Search - CONTAINS not returning results on windows server 2008Microsoft 桌面搜索 - 包含未在 Windows Server 2008 上返回结果
【发布时间】: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 以查看这是否重要...

标签: c# sql wds


【解决方案1】:

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

声明@SearchWord nvarchar(30) = 'a'

然后将你的代码修改为:

选择文件名

来自系统索引

其中包含(@SearchWord)

此摘录来自 TechNet 上的 CONTAINS See TechNet

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

【讨论】:

  • 它不起作用。 Search.Collat​​orDSO.1” 提供者不支持 ICommandWithParameters 接口。当前提供者程序不支持命令参数。
【解决方案2】:

我遇到了同样的问题。经过几天的尝试,我发现了可以在 windows server 2008 r2 中运行的代码:

AND CONTAINS('keyword')
->
and System.Search.AutoSummary like '%keyword%'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 2013-09-28
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多