在.NET堆栈中集成搜索引擎

9
我正在寻找一个非常强大的软件搜索引擎,以便将其集成到.Net网站中。
目前提出的解决方案是基于Lucene的堆栈——Lucene.NET。但在做决定之前,我想评估其他搜索引擎。
我们需要的特性集如下:
- 通过HTTP爬取任意页面的能力 - 解析站点地图的能力 - 通过数据库查找获取要解析的URI列表的能力 - 将搜索限制到特定语言/区域设置的能力 - 将搜索限制为页面子集(例如,通过URI上的正则表达式)的能力 - 快速性和可扩展性(这是用于具有大量流量的公共网站) - 必须具有.NET API支持或超级简易的基于http的API,可以封装在.NET API中 - 语言相关的全文支持
其他很好但如果不支持也不会影响使用的功能包括:
- 报告 - 别名和偏见结果 - 基于HTTP的管理页面 - SQL Server支持
你用过哪些其他软件搜索引擎?你推荐哪个,或者我们应该避免哪个?
7个回答

3
Lucene.Net是一种信息检索库,而不是搜索引擎。它特别不会执行以下任何操作:
  • 爬取网页或解析站点地图
  • 报告
  • 基于HTTP的管理页面
  • SQL Server支持(Lucene.Net使用自己简单但高效的文件格式,不使用SQL Server)
虽然我强烈支持SQL,并建议将其作为搜索引擎的全文搜索组件,但您还需要一个爬虫/ HTML解析器组件才能创建完整的功能搜索引擎,并且您需要仔细设计Lucene.Net索引以最大化所需查询的性能(按语言/区域设置进行搜索)。
尝试查看Solr项目,它是一个完整的搜索引擎,使用Lucene - 这可能更适合您的需求。

3
请查看微软的Search Server Express,但目前该页面显示有问题,因此请使用此链接

还有其他企业引擎,例如vivisimo velocity(非常可扩展),autonomy等。 Lucene和Solr功能有限,使用和配置都很困难,但这就是你想要免费东西时所得到的结果。


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

1

你有没有考虑过使用一些封装了Lucene.Net并提供更多功能的东西来实现你想要的效果,而不是直接使用Lucene.Net呢?

Solr是一个Apache产品,可以做到这一点,同时也有一个.Net客户端移植版。我从未在生产中使用过它,但它看起来像是你需要的类型。

类似的想法还有Nutch(最初编写Lucene的人编写),尽管我不知道是否有它的.Net版本。Nutch确实有一个爬网站的组件。


Solrnet不是Solr的.NET端口,而是一个客户端库。 - Mauricio Scheffer

1

1

Coveo是我们目前正在使用的搜索引擎,以替换使用多年的Google Mini。我只是指出这些作为探索的内容,因为我没有足够的使用经验来了解它们的好坏。我只知道每个都有很多头痛问题。


1

您也可以查看OpenSearchServer

在Windows上运行非常顺畅。您可以使用SOAP Web服务进行集成。

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

免责声明:我是OpenSearchServer的CEO


1
感谢您发布答案!请务必仔细阅读有关自我推广的FAQ。还请注意,每次链接到您自己的网站/产品时,必须发布免责声明。 - Andrew Barber
嗨,安德鲁。谢谢你的通知。仔细阅读了常见问题解答,特别是“我可以在这里推广我所属的产品或网站吗?”一题后,我没有找到任何关于那种免责声明的详细信息。有什么好的做法吗? - Emmanuel Keller
1
根据您的适当角色进行调整,但类似于:“免责声明:我是OpenSearchServer团队的负责人”,应该在链接或任何提及之后发布。请注意,当有人提出关于如何在您的任何产品上执行某些操作的问题时,“如何使用OpenSearchServer调整我的齿轮?” - 您可以回答这种“帮助”问题而无需披露。 - Andrew Barber
@AndrewBarber 我现在就去做。三点评论:1.我不是营销人员。2.OpenSearchServer的网站自始至今都在我的公开资料中。3.答案很相关。;-) - Emmanuel Keller
@EmmanuelKeller 关于第三点,我知道;如果它不相关的话,我会简单地标记为垃圾邮件并忘记它。关于第一点和第二点,当然都可以。但请注意,要求您在回答中提及/链接到产品/网站时披露此事,因为许多读者不会仔细查看个人资料甚至用户名。无论如何,请记住这一点,并保持您的回答相关,就不会有任何问题 :) - Andrew Barber
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接