什么是最好的全文搜索开源项目(.NET首选)?

时间:2010-11-08 13:34:41

标签: c# lucene full-text-search

我使用Lucene库开发了一个索引和搜索应用程序。但是这个库在我的上下文中的自定义排名有一些限制,除了它的性能,我需要可扩展性和访问各种单词频率等等有没有强大的开源全文库?

1 个答案:

答案 0 :(得分:5)

http://www.sphinxsearch.com

http://www.sphinxconnector.net/

关键的Sphinx功能包括:

  • 高索引和搜索性能;
  • 高级索引和查询工具(灵活且功能丰富的文本标记器,查询语言,多种不同的排名模式等);
  • 高级结果集后处理(在文本搜索结果中使用表达式,WHERE,ORDER BY,GROUP BY等SELECT);
  • 经过验证的可扩展性高达数十亿个文档,数TB数据和每秒数千个查询;
  • 与SQL和XML数据源以及SphinxAPI,SphinxQL或SphinxSE搜索界面轻松集成;
  • 使用分布式搜索轻松扩展。

为了扩大一点,Sphinx:

  • 具有较高的索引速度(内部基准测试时每个核心高达10-15 MB /秒);
  • 具有较高的搜索速度(每个核心高达150-250个查询/秒,1,000,000个文档,内部基准测试数据为1.2 GB);
  • 具有很高的可扩展性(最大的已知集群索引超过3,000,000,000个文档,最繁忙的一个峰值超过50,000,000个查询/天);
  • 通过短语邻近排名和统计(BM25)排名的组合提供良好的相关性排名;
  • 提供分布式搜索功能;
  • 提供文档摘录(片段)生成;
  • 提供从应用程序内部使用SphinxAPI或SphinxQL接口进行搜索,以及从MySQL内部使用可插入的SphinxSE存储引擎进行搜索;
  • 支持布尔,短语,单词邻近和其他类型的查询;
  • 支持每个文档的多个全文字段(默认情况下最多为32个);
  • 支持每个文档的多个附加属性(即组,时间戳等);
  • 支持停用词;
  • 支持形态词形式词典;
  • 支持标记异常;
  • 支持单字节编码和UTF-8;
  • 支持词干(英语,俄语和捷克语的词干表是内置的;法语,西班牙语,葡萄牙语,意大利语,罗马尼亚语,德语,荷兰语,瑞典语,挪威语,丹麦语,芬兰语,匈牙利语的词干表可通过构建第三个party libstemmer library);
  • 原生支持MySQL(支持所有类型的表,包括MyISAM,InnoDB,NDB,Archive等);
  • 原生支持PostgreSQL;
  • 原生支持ODBC兼容数据库(MS SQL,Oracle等);
  • ...还有50多个此处未列出的其他功能,请参阅API和配置手册!