集成到 .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 堆栈中的搜索引擎的主要内容,如果未能解决你的问题,请参考以下文章