选择独立的全文搜索服务器:Sphinx 还是 SOLR? [关闭]
问题:选择独立的全文搜索服务器:Sphinx 还是 SOLR? [关闭]
我正在寻找具有以下属性的独立全文搜索服务器:
-
必须作为独立服务器运行,可以服务来自多个客户端的搜索请求
-
必须能够通过索引 SQL 查询的结果来进行“批量索引”:比如“SELECT id, text_to_index FROM documents;”
-
必须是免费软件,必须在以 MySQL 为数据库的 Linux 上运行
-
一定要快(排除MySQL内部全文搜索)
我发现具有这些属性的替代品是:
-
Solr(基于Lucene)
-
ElasticSearch(同样基于Lucene)
-
狮身人面像
我的问题:
-
他们如何比较?
-
我错过了任何替代方案吗?
-
我知道每个用例都是不同的,但是在某些情况下我肯定_不_想要使用某个包?
解答
我已经成功使用 Solr 快 2 年了,从未使用过 Sphinx,所以我显然有偏见。但是,我会尝试通过引用文档或其他人来保持客观。我也会为我的答案打补丁:-)
相似之处:
-
Solr 和 Sphinx 都能满足您的所有要求。它们速度很快,旨在有效地索引和搜索大量数据。
-
两者都有一长串使用它们的高流量站点(Solr,Sphinx)
-
两者都提供商业支持。 (Solr,狮身人面像)
-
两者都为多种平台/语言提供客户端 API 绑定(Sphinx,Solr)
-
两者都可以分发以提高速度和容量(Sphinx,Solr)
以下是一些区别:
-
Solr 作为一个 Apache 项目,显然是 Apache2 许可的。狮身人面像是 GPLv2。这意味着如果您需要在商业应用程序中嵌入或扩展(不仅仅是“使用”)Sphinx,则必须购买商业许可证(基本原理)
-
Solr 是可轻松嵌入 Java 应用程序中的。
-
Solr 建立在 Lucene 之上,这是一项经过验证的技术,比8 岁具有huge 用户群(这只是一小部分)。每当 Lucene 获得新功能或加速时,Solr 也会获得它。许多致力于 Solr 的开发人员也是 Lucene 提交者。
-
Sphinx 与 RDBMS 的集成更加紧密,尤其是 MySQL。
-
Solr可以与Hadoop集成构建分布式应用
-
Solr 可以将与 Nutch 集成,快速构建一个成熟的网络搜索引擎,带有爬虫。
-
Solr 可以索引专有格式,如 Microsoft Word、PDF 等。狮身人面像不能。
-
Solr 带有一个开箱即用的拼写检查器。
-
Solr 带有开箱即用的刻面支持。 Sphinx中的刻面需要更多的工作。
-
Sphinx 不允许对字段数据进行部分索引更新。
-
在 Sphinx 中,所有文档 id 必须是唯一的无符号非零整数。 Solr甚至不需要许多操作的唯一键,唯一键可以是整数或字符串。
-
Solr 支持字段折叠(目前仅作为附加补丁)以避免重复类似的结果。 Sphinx 似乎没有提供任何这样的功能。
-
虽然Sphinx 旨在仅检索文档 ID,但在 Solr 中,您可以直接获取包含几乎任何类型数据的整个文档,使其更加独立于任何外部数据存储,并且节省了额外的往返。
-
Solr,除了使用嵌入式时,运行在Java web 容器例如 Tomcat 或 Jetty,这需要额外的特定配置和调整(或者您可以使用[包含的 Jetty]和 zwz100 )。 Sphinx 没有额外的配置。
相关问题:
-
使用 Rails 进行全文搜索
-
全文搜索引擎对比——Lucene、Sphinx、Postgresql、MySQL?
更多推荐



所有评论(0)