问题标签 [indexing-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3425 浏览

sql-server-2008-r2 - Full-text search using Windows Search Service and SQL Server 2008 R2

Currently I'm trying to query the Windows Search Service from a SQL Server 2008 R2 instance (also tested on SQL Server 2012) . Windows Search is being exposed as an OLE DB datasource, giving me several options to query the search index. When configuring a new Linked Server in SQL Server, Management Studio gives me the option to select the Microsoft OLE DB Provider for Search, implying that I should be able to connect to it from SQL Server. It turns out to be a challenge to get this up and running however. Below you'll find the error message I stumbled upon.

OLE DB provider "Search.CollatorDSO" for linked server "TESTSERVER" returned message "Command was not prepared.".
Msg 7399, Level 16, State 1, Line 2
The OLE DB provider "Search.CollatorDSO" for linked server "TESTSERVER" reported an error. Command was not prepared.
Msg 7350, Level 16, State 2, Line 2
Cannot get the column information from OLE DB provider "Search.CollatorDSO" for linked server "TESTSERVER".

Things get even more interesting. Although the Linked Server solution isn't working, I'm able to wrap code that queries Windows Search in a CLR Function (using MSDN: Querying the Index Programmatically) and use if successfully within SQL Server. This is however less desirable, because of the steps needed to set it up (deploying the library, configuring permissions, etc.). I've tried several parameter settings, without any luck. I've also tried enabling some of the Search.CollatorDSO provider options, like allowing the provider to be instantiated as an in-process server. I'm currently using the settings below. For security I'm using the login's current security context.

  • Provider: Microsoft OLE DB Provider for Search
  • Data source: (local)
  • Provider string: Provider=Search.CollatorDSO.1;EXTENDED?PROPERTIES="Application=Windows"
  • Location: -

Additionally I need to search network drives, can this be done using shared Windows libraries?

I'm aware more people have been struggling with this problem over the last few years. I'm wondering if someone has been able to get this up and running, or could point me in the right direction.

OLEDB Works

Normal ADO/OLEDB components can query the Windows Search service with the connection string:

And an example query:

You can try the query directly on SQL Server in SQL Server Management Studio by attempting to run:

Which gives the errors:

Bonus Reading

0 投票
1 回答
98 浏览

asp-classic - 调整索引服务网络搜索的相关性

我运行一个使用 Windows 索引服务为搜索页面创建目录的网站。我返回前 30 个结果。

用户问我为什么没有返回某个页面。搜索的短语是“Papal Blessing Form”。这是指向 PDF 表单的链接的确切标题。我尝试让搜索返回所有匹配项,但页面未返回。然而,我确实得到了大多数带有“形式”、“祝福”和“教皇”字样的页面。我什至重建了目录,认为该页面是新的且尚未编入索引。

如何修改索引设置以便返回更好的结果?

麦克风

0 投票
0 回答
302 浏览

indexing-service - windows索引服务的替换

我经营一个具有搜索功能的网站。搜索目录由 Windows Server 2008 的索引服务生成。然后我使用经典 ASP 查询目录并返回搜索结果。

我遇到了一些问题,即我的网站中的页面没有被索引并作为搜索结果返回。此外,PDF 文件等文件不会被退回。

我正在寻找替换索引服务并需要帮助来查找程序以创建我可以搜索的目录。我已与 Google 核对过,但没有找到创建搜索目录的程序。但是,我确实得到了一长串第三方网站,如果我想付款,它们会为我的网站创建一个搜索引擎。:-(

人们建议将搜索引擎作为网站的一部分进行托管吗?

麦克风

0 投票
0 回答
2015 浏览

asp-classic - 替换 Windows 2012 服务器上的索引服务

我们公司有 2 个当前网站托管在 windows server 2003 上。这些网站使用经典 ASP 构建,并使用 MSIDXS 提供程序连接到特定的数据源/索引服务目录(每个网站一个)并显示结果SQL 搜索基于字符串参数返回到 ASP 页面。

我们正在将这些网站迁移到不再支持索引服务的 Windows server 2012: Microsoft 网站上的确认

因此,我们的 IT 部门已通过 2012 服务器上服务器管理中的角色安装了 Windows Search(出于安全原因,我们只能通过 FTP 连接到服务器),但我们找不到任何有关如何将 ASP 页面连接到windows 搜索服务,定义它应该搜索的位置以产生搜索结果。

有其他人遇到过这个问题并解决了吗?

0 投票
1 回答
589 浏览

sql-server - 无法使用 SQL 身份验证用户查询索引服务

随着下个月 Windows 2003 停产数据的临近,我正在将一个旧应用程序迁移到 Windows 2008。除了我们与索引服务的连接之外,这一切都进行得非常顺利。

我们有两台服务器,一台运行 SQL 2008 的数据库服务器和一台 Web 服务器。我们的 Web 应用程序允许用户搜索文档存储。这是过程:

  1. 用户输入对 Web 应用程序的查询
  2. Web 应用程序向数据库服务器发送查询
  3. 该查询将 Web 应用程序作为链接数据库服务器引用,并将检索到的路径加载到临时表中
  4. 数据库服务器将这些路径与 SQL 服务器中的另一个表连接起来
  5. 数据库服务器将结果发送回 Web 应用程序
  6. Web 应用程序向用户显示结果。

Web 应用程序通过 SQL 身份验证登录到数据库服务器以执行查询,但它失败并出现以下错误:

准备查询 "SELECT PATH FROM "10.0.1.89".MyCatalog..SCOPE('DEEP TRAVERSAL OF "C:\Documents"') WHERE (FREETEXT(Contents, 'introduction')) OR (FREETEXT(FileName) 时出错, 'introduction'))" 用于针对链接服务器“文件系统”的 OLE DB 提供程序“MSIDXS”执行。

当我通过 SSMS 在数据库服务器上以该用户身份登录时尝试执行查询时,会显示相同的错误,但会显示一些额外信息:

链接服务器“文件系统”的 OLE DB 提供程序“MSIDXS”返回消息“无效的目录名称 'MYCATALOG'。SQLSTATE=42000”。

消息 7399,第 16 层,状态 1,第 1 行

链接服务器“文件系统”的 OLE DB 提供程序“MSIDXS”报告错误。

拒绝访问。

消息 7321,第 16 层,状态 2,第 1 行

准备查询 "SELECT PATH FROM "10.0.1.89".MyCatalog..SCOPE('DEEP TRAVERSAL OF "C:\Documents"') WHERE (FREETEXT(Contents, 'introduction')) OR (FREETEXT(FileName) 时出错, 'introduction'))" 用于针对链接服务器“文件系统”的 OLE DB 提供程序“MSIDXS”执行。

但是,当我使用我的 Windows 身份验证帐户登录 SSMS 时,我能够执行相同的查询并返回结果。我的用户名和密码必须与 Web 服务器上的帐户相同 - 如果我在 Web 服务器上更改我的密码,则会引发错误,但不是同一个:

链接服务器“文件系统”的 OLE DB 提供程序“MSIDXS”返回消息“未指定错误”。

链接服务器“文件系统”的 OLE DB 提供程序“MSIDXS”返回消息“无效的目录名称 'MYCATALOG'。SQLSTATE=42000”。

Msg 7321, Level 16, State 2, Line 1 准备查询“SELECT PATH FROM "10.0.1.89".MyCatalog..SCOPE('DEEP TRAVERSAL OF "C:\Documents"') WHERE (FREETEXT(Contents , 'introduction')) OR (FREETEXT(FileName, 'introduction'))" 用于针对链接服务器“文件系统”的 OLE DB 提供程序“MSIDXS”执行。

我用这个查询创建了链接服务器,它似乎与旧系统的配置相匹配:

我在 Web 服务器上创建了一个名为 CatalogUser 的用户,并将其密码设置为与上面的查询相同。

但是,当我使用 Windows 身份验证连接时,此信息似乎被忽略了,而是使用了我的 Windows 身份验证数据。如果我将密码更改为任何内容,查询仍然会成功。

我尝试启用 CatalogUser 以作为服务帐户登录,但这没有任何效果。

这两台机器不在域中,但两台 Windows 2003 机器也不在域中,而且工作得很好。

我一定错过了两者之间的设置。不幸的是,这些机器早在人们开始为这样的东西保存文档之前就已经设置好了,所以我不确定缺少的步骤是什么。

网上没有太多关于这个问题的信息,大概是因为软件年代久远,所以至少我们可以在这里开始建立一个知识库。我想知道现在是否有更多的人对这个软件有问题,生命即将结束。

0 投票
2 回答
2049 浏览

asp-classic - 需要用经典 ASP (VB) 替换 Server 2012 上的 MS 索引服务

我刚刚将一个网站从 Server 2003 迁移到 Server 2012,MS Indexing 服务不可用。
在做一些研究时,我发现 MS Search Service 是“替代品”,因此,我将它安装在 Server 2012 上。除此之外,我还没有找到启用所需的 ASP-Classic (VB) 代码新的搜索服务对我的文档进行编目,就像索引服务所做的那样。

MS Search Service 是否具有编目和搜索文档的能力和灵活性,并以与 MS Indexing Service 相同的方式返回结果?

下面是当前调用 MS 索引服务的代码示例(在 Windows 2003 服务器上):

并且,将列出每个文档的结果(文档的名称,文档文本的摘录,以及标题、大小),如下图所示: 在此处输入图像描述

感谢您提供任何线索和/或替代方案。

0 投票
0 回答
530 浏览

iis - 在代码中实例化索引服务查询对象 (ixsso.dll) 时出错。“ActiveX 组件无法创建对象”

我们已按照 Microsoft 的说明在 Windows 2008 R2(64 位)中安装索引服务。

安装后,我确认 ixsso.dll (v6.1.7601.17514) 位于 C:/Windows/System32 文件夹中。我相信这是这个 dll 的 64 位版本(如果您确定,请告诉我)。

我还确认索引服务正在运行并且目录已成功构建。

但是,在实现以下代码行(经典 ASP、VBScript)以编程方式实例化与此 dll 对应的对象时,我们收到错误:

我们收到以下 VBScript 运行时错误:

对于解决此问题的任何帮助,我将不胜感激。提前致谢!

0 投票
1 回答
115 浏览

indexing - 索引服务

我在通过索引服务获取数据时遇到问题。

服务器名称:RETSO-NT21.CA.com 目录
名称 :MyCatalog1
文本搜索:测试

这是我的查询:

当我运行它时,我会收到以下错误消息:

'-' 附近的语法不正确。预期的文件结尾,';',AS,CREATE,DOT,DOTDOT,DOTDOT_SCOPE,DOTDOTDOT,DOTDOTDOT_SCOPE,DROP,ORDER_BY,SELECT,SET,WHERE。SQLSTATE=42000

当我使用没有“-”和“。”的服务器名称时,它工作正常。
但显然我不能更改服务器名称。

任何人都可以帮助我如何在查询中使用带有特殊字符的服务器名称?

谢谢

0 投票
1 回答
1215 浏览

c# - 检查是否安装了 Microsoft OLE DB Provider for Index Server(又名 Provider=MSIDXS)?

我使用 Windows Server 2008 R2 和 ASP.NET 4.6.1。

如何检查是否安装了 Microsoft OLE DB Provider for Index Server (Provider= MSIDXS)?

也许获取系统中可用的 OLEDB 提供程序的列表。

0 投票
0 回答
227 浏览

asp-classic - 经典 ASP 和 ixsso.query 返回 EOF

我遇到了一个经典的asp站点有点奇怪的问题,它使用索引服务通过给定参数搜索文件夹,然后列出文件夹中的文件。文件夹名称是唯一的,因此查询应该只返回一个记录集。站点在 w2k8 64 环境下运行。在它在 w2k3 服务器上运行之前。

基本上一切运行正常,但在某些极少数情况下,特定文件夹查询根本不返回任何内容。只有当我从远程位置访问该站点时才会发生这种情况。如果我在本地主机上访问该站点,那么对于那些有问题的情况,一切都可以正常工作。

这是代码块

有没有人提出过同样的问题?任何想法如何解决它?

更新:我在 ASP.NET 中重写了该程序,因为它不能像经典的 asp 那样工作。