集成到 .NET 堆栈中的搜索引擎

Posted

技术标签:

【中文标题】集成到 .NET 堆栈中的搜索引擎【英文标题】:Search engine to integrate in a .NET stack 【发布时间】:2011-01-10 21:59:44 【问题描述】:

我正在寻找一个非常强大的软件搜索引擎来集成到 .Net 网站中。

当前提出的解决方案是 Lucene.NET 一个基于 Lucene 的堆栈。不过,我想在下定决心之前先评估一下其他搜索引擎。

我们需要的功能集如下:

能够通过 HTTP 抓取任意页面 能够解析站点地图 能够通过数据库查找获取要解析的 URI 列表 能够将搜索限制为特定语言/区域设置 能够将搜索限制在页面子集(例如,通过 URI 上的正则表达式) 速度和可扩展性(这适用​​于拥有大量流量的公共网站) 必须具有 .NET API 支持或可以封装在 .NET API 中的基于 http 的超级简单 API 依赖语言的全文支持

其他很棒的东西,但如果不受支持,则不会破坏交易:

报告 结果的混叠和偏差 基于 HTTP 的管理页面 SQL Server 支持

还有哪些其他软件搜索引擎对您有用?您有什么建议或我们应该避免的吗?

【问题讨论】:

【参考方案1】:

我建议您查看Solr。它是基于 Java 的,但符合基于 HTTP 的 API 要求,旨在运行在与主应用程序不同的盒子/集群上(因此您不一定需要在同一硬件上使用 Java 和 .NET),并且它有很大的动力。自从我使用它已经有一段时间了,但我不记得它提供了自己的爬虫。如果情况仍然如此,那么使用独立的爬虫和上述 API 来使其工作应该很简单。

【讨论】:

【参考方案2】:

您是否考虑过使用封装它并提供更多类似于您所追求的功能的东西,而不是直接使用 Lucene.Net?

Solr 是一个 Apache 产品,它可以做到这一点,并且还有一个 .Net client port of。我从来没有在生产中使用过它,但它看起来像你所追求的东西。

类似的想法是Nutch(由最初编写 Lucene 的人编写),尽管我不知道它的任何 .Net 版本。 Nutch 确实有一个蜘蛛组件来抓取网站。

【讨论】:

Solrnet 不是 Solr 的 .net 端口,它是一个客户端库。【参考方案3】:

正如其他人所说,definitley 使用 Solr 与原始 Lucene 一起使用。将它与 .Net 集成非常简单。实际上,我最近才在博客上写过这个:http://crazorsharp.blogspot.com/2010/01/full-text-search-using-solr-lucene-and.html

【讨论】:

【参考方案4】:

Lucene.Net 是一个信息检索库,而不是搜索引擎。特别是它不会做任何事情:

抓取网页或解析站点地图 报告 基于 HTTP 的管理页面 SQL Server 支持(Lucene.Net 使用自己简单但高效的文件格式,不使用 SQL Server)

虽然我是 SQL 或 SQL 的坚定支持者,并且会推荐它作为搜索引擎的全文搜索组件,但您还需要一个爬虫/html 解析器组件才能创建一个功能齐全的搜索引擎,而您将不得不仔细设计您的 Lucene.Net 索引,以最大限度地提高您想要的查询的性能(按语言/区域设置搜索)

尝试查看Solr 项目,这是一个使用 Lucene 的成熟搜索引擎 - 这可能更适合您的需求。

【讨论】:

【参考方案5】:

查看 Microsoft 的 Search Server Express,尽管该页面目前看起来很糟糕,所以试试这个 link。

还有其他企业引擎,例如vivisimo velocity(非常可扩展)、自治等。Lucene 和 Solr 受到限制,难以使用和配置,但当您想要免费的东西时,这就是您所得到的。

【讨论】:

【参考方案6】:

Coveo 是我们目前用来替换已使用多年的Google Mini 的搜索引擎。我只是指出这些是值得探索的,因为我还没有使用足够多的东西来了解它们有多好。我只知道每个、很多很多的头痛。

【讨论】:

【参考方案7】:

你也可以看看OpenSearchServer

在 Windows 上运行就像一个魅力。您可以使用 SOAP Web 服务进行集成。

还有一个使用 XML/REST API 的 C# 框架库。

免责声明:我是 OpenSearchServer 的 CEO

【讨论】:

感谢您发布您的答案!请务必仔细阅读FAQ on Self-Promotion。另请注意,每次链接到自己的网站/产品时,都要求发布免责声明。 你好安德鲁。谢谢你的通知。仔细阅读常见问题解答后,尤其是“我可以在这里推广我所属的产品或网站吗?”主题,我无法找到有关这种免责声明的任何细节。什么是好的做法? 根据您的适当角色调整此内容,但类似:“免责声明:我是 OpenSearchServer 团队的负责人”,在链接或任何提及它之后发布。请注意,当有人问特别是关于如何在您的任何产品上做某事的问题时,这并不重要,“我如何用 OpenSearchServer 装配我的 sprockets?” - 您可以在不透露信息的情况下回答这类“帮助”问题。 @AndrewBarber,您可以像我一样简单地自己修复它 - 这个网站是协作编辑的 :-) @Sklivvz 我主要希望能够为未来阐明这一点。我最初也不是 100% 确定他与它有关联(只是几乎可以肯定!呵呵)。但这仍然是一个好点:-)

以上是关于集成到 .NET 堆栈中的搜索引擎的主要内容,如果未能解决你的问题,请参考以下文章

JRC 引擎处理的文档无法在 C++ 堆栈中打开

快速集成 .Net Web App

无法将 IE9 渲染引擎与 vb.net 浏览器控件集成

运行递归线性搜索时出现堆栈溢出错误

基于 NHibernate 的全文搜索

SpringBoot2.x集成分布式搜索引擎Elasticsearch