gpt4 book ai didi

asp.net-mvc - 使用 ASP.NET MVC 访问 Windows 搜索索引

转载 作者:行者123 更新时间:2023-12-04 06:50:16 24 4
gpt4 key购买 nike

我正在从 vbscript 升级到 ASP.NET MVC 的项目中。它使用 Microsoft Index Server 在 Windows Server 2003 机器上索引 Word 和 PDF 文件。它只是使用“Provider=\”MSIDXS\”;Data Source=\“docSearch\”;”之类的连接字符串打开了一个 OleDbConnection。

经过一番研究,我了解到索引服务器已过时(“注意索引服务在 Windows XP 中已过时。相反,请使用 Windows 搜索。” - http://msdn.microsoft.com/en-us/library/ms690580 )并且 Windows 搜索是继任者。
因此,在我的新 MVC 应用程序中,我尝试使用 OleDbConnection 连接字符串,例如“Provider=Search.Collat​​orDSO;Extended Properties=\”Application=Windows\“”。

我有一个接受格式化查询并执行搜索的方法 - 这是使用 OleDb 执行的查询:

string.Format("SELECT System.FileName FROM SystemIndex WHERE CONTAINS('{0}')", query)

现在,当我在测试类中调用我的方法时,它工作正常(即返回结果...... myDataReader.HasRows 为真)。但是,当我从 MVC Controller 调用相同的方法时,它不会返回任何结果 - myDataReader.HasRows 为 false - 使用相同的查询。我的猜测与权限和 IIS 无法访问索引有关。如何让 IIS 访问索引?如何将索引公开给 ASP.NET 网页?如果 Index Server 已过时,并且 Windows Search 不支持此功能,我应该使用什么?

最佳答案

我不会仅仅因为它不受支持而改变,除非您在索引服务方面遇到特定问题或需要较新版本的功能。

我会从 ISearchQueryHelper 获取连接字符串

该服务是否具有正确的权限?您是否检查过 Windows Search 3.0/4.0 SDK?

我看到你在论坛上(http://social.msdn.microsoft.com/Forums/en-US/windowsdesktopsearchdevelopment/thread/7b9eead4-d938-42c6-ba2b-2c238a7706f9)

我不确定 Windows Search 能否真正取代网站索引服务。例如,只有一个名为“SystemIndex”的索引包含本地系统上的所有内容。因此,您如何将结果限制在一个网站上?

我相信您需要使用我没有经验的“企业搜索”或“搜索服务器”。

由于 Indexing Service 和 Windows Search 的结果都是 ADO.NET,因此表示方式没有太大变化。 API 非常不同,您需要进行许多更改。例如,Windows 搜索中没有“范围”。当我更改我的个人“桌面搜索”应用程序时,需要一个小时才能进行更改,但由于 API 更改,我需要两天时间才能复制索引服务的所有功能。我进行了此更改,因为 Windows Search 在我的“代码库”中搜索代码片段时更好

对于没有正则表达式或通配符或非标准属性的标准查询,两者执行相同。索引服务总是更快地检索数据,但可能不会执行一些“过于昂贵”的查询。 Windows Search 检索数据可能需要很长时间,具体取决于查询。通常,这些“长查询”是索引服务的“过于昂贵”的查询。 “长查询”也可能来自任何检索未包含在索引中的属性的查询。

我仍然在 Windows Server 2003 上为我的网站使用索引服务,并且不打算进行任何更改,因为它不像我预期的那么容易,也没有令人信服的理由。

关于asp.net-mvc - 使用 ASP.NET MVC 访问 Windows 搜索索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3225075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com