【问题标题】:converting MSIDXS search to Windows Search Service for website将 MSIDXS 搜索转换为网站的 Windows 搜索服务
【发布时间】:2014-03-10 18:01:50
【问题描述】:

这是我的情况:我正在对我们公司的公共网站进行网站大修。旧站点在 .net 框架 3.5 上的服务器 2003 上运行?它可能最初是基于 2.0 框架构建的。无论如何,旧网站有一个搜索功能,它非常适合用户查找与他们感兴趣的主题相关的页面。它使用旧的 MSIDXS oledb 连接类型...简单代码如下...

Dim odbSearch As New System.Data.OleDb.OleDbConnection("Provider=""MSIDXS"";Data Source=""Proto"";")
Dim cmdSearch As New System.Data.OleDb.OleDbCommand
cmdSearch.CommandText = String.Format("SELECT doctitle, filename, vpath, rank, characterization, size FROM scope() WHERE FREETEXT(Contents, '{0}') ORDER BY rank DESC", searchText)  WHERE CONTAINS(*,'\""" & searchText & "*\""') AND scope='file:C:\...\Web_App' ORDER BY System.ItemPathDisplay DESC

这很好用。但现在我们将其移至 2008 r2 服务器,该服务器不再具有 MSIDXS 索引……或者它有,但不适用于站点?我能够打开它,但它什么也没找到,目录仍然是空的,我读过的所有内容都说这不再是如何在网站上进行搜索了。我读到的“新方式”是使用 Windows 搜索服务。我已经将盒子上的服务调整为“索引”网站目录,目录中似乎有东西......但是,我转换的代码总是返回 0。所以新代码看起来像......

Dim odbSearch As New System.Data.OleDb.OleDbConnection("Provider=Search.CollatorDSO.1;Extended Properties='Application=Windows';")
cmdSearch.CommandText = String.Format("SELECT system.title, system.filename, System.ItemPathDisplay FROM SystemIndex WHERE scope='file:C:\...\Web_App'")
Dim rdrSearch As OleDbDataReader = cmdSearch.ExecuteReader()
While rdsSearch.read()

我无法让它真正返回任何结果。不管我输入什么作为搜索条件,它都会跳到最后。

谁能告诉我我缺少哪一块拼图?

【问题讨论】:

    标签: asp.net vb.net search windows-server-2008-r2


    【解决方案1】:

    实际上一切都是正确的;我没有返回任何行,因为我已经缩小了 systemIndex 以查看我想要的子目录,因此在 where 子句中包含范围会导致零结果。一旦我把它拿出来,搜索就可以了。

    【讨论】:

      【解决方案2】:

      看起来应该将范围指定为“file:C:\\...\\Web_App”,或者在查询字符串的开头添加一个“@”符号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-27
        • 2013-10-26
        • 2018-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多