我正在寻找具有以下属性的独立全文搜索服务器:
必须作为可以服务来自多个客户端的搜索请求的独立服务器运行 必须能够通过索引SQL查询的结果来执行“批量索引”:说“SELECT id,text_to_index FROM documents;” 必须是免费软件,并且必须在Linux上以MySQL作为数据库运行 必须很快(排除MySQL内部全文搜索) 我发现有这些属性的替代品是:
Solr(基于Lucene) ElasticSearch(也基于Lucene) 狮身人面像 我的问题:
他们如何比较? 我错过了其他选择吗? 我知道每个用例都是不同的,但是在某些情况下我肯定不想使用某个包?
我已经成功使用Solr将近2年了,从未使用Sphinx,所以我显然有偏见。 不过,我会尽量通过引用文档或其他人来保持客观。 我也会给我的答案补丁:-)
相似点:
Solr和Sphinx都满足您的所有要求。 它们速度快,旨在有效地索引和搜索大量数据。 两者都有很长的高流量网站列表(Solr,Sphinx) 两者都提供商业支持。 (Solr,狮身人面像) 两者都为几种平台/语言提供客户端API绑定(Sphinx,Solr) 两者都可以分发以提高速度和容量(Sphinx,Solr) 这里有一些区别:
作为一个Apache项目,Solr显然是Apache2许可的。 狮身人面像是GPLv2。 这意味着如果您需要在商业应用程序中嵌入或扩展(不仅仅是“使用”)Sphinx,您必须购买商业许可证(基本原理) Solr很容易嵌入到Java应用程序中。 Solr建立在Lucene的基础之上,这是一个已有8年历史的成熟技术,拥有庞大的用户群(这只是一小部分)。 每当Lucene获得新功能或加速时,Solr也会获得它。 许多向Solr提交的开发人员也都是Lucene提交者。 Sphinx与RDBMSs更紧密地集成,特别是MySQL。 Solr可以与Hadoop集成以构建分布式应用程序 Solr可以与Nutch集成,以快速构建一个具有爬虫功能的完整网页搜索引擎。 Solr可以索引专有格式,如Microsoft Word,PDF等.Sphinx不能。 Solr开箱即带有拼写检查器。 Solr带来了方框支持。 在狮身人面像雕刻需要更多的工作。 狮身人面像不允许部分索引更新字段数据。 在狮身人面像中,所有文档ID必须是唯一的无符号非零整数。 Solr甚至不需要许多操作的唯一键,唯一的键可以是整数或字符串。 Solr支持字段折叠(目前仅作为附加补丁)以避免重复类似的结果。 狮身人面像似乎没有提供任何这样的功能。 尽管Sphinx仅用于检索文档ID,但在Solr中,您可以直接获取具有几乎任何类型数据的整个文档,使其更加独立于任何外部数据存储,并且节省了额外的往返时间。 除了使用嵌入式之外,Solr运行在Java Web容器(如Tomcat或Jetty)中,这些容器需要额外的特定配置和调整(或者您可以使用附带的Jetty并使用java -jar start.jar
启动它)。 狮身人面像没有额外的配置。 相关问题:
全文搜索使用Rails 全文搜索引擎比较 - Lucene,Sphinx,Postgresql,MySQL?
除非您需要以任何专有方式扩展搜索功能,否则Sphinx是您最好的选择。
狮身人面像的优点:
开发和设置速度更快 更好(更快)的聚合。 这是我们的杀手锏。 不是XML。 这是最终排除Solr的原因。 由于缺少Solr聚合,我们不得不返回相当大的结果集(想象数以百计的结果),然后自己进行聚合。 序列化XML和从XML序列化的时间量绝对会导致性能下降。 尽管对于小型结果集来说,它非常好。 我在开源应用程序中看到的最佳文档 Solr的优点:
可以扩展。 可以直接从网络应用中直接点击它,也就是说,您可以通过AJAX直接通过类似自动完成的搜索直接访问Solr服务器。
注意:有很多用户在考虑同一个问题。
所以,要回答这个问题:
为什么?
如果您打算在您的网络应用程序(示例站点搜索引擎)中使用Solr ,请使用Solr 。 由于其API,它肯定会变得很棒。 你肯定会需要这种权力的网络应用程序。
如果您想要快速搜索大量文档/文件,请使用Sphinx 。 它也索引真正快。 我建议不要在涉及JSON或解析XML的应用程序中使用它以获取搜索结果。 用它直接进行dB搜索。 它在MySQL上很好用。
备择方案
虽然这些是巨人,但还有更多。 此外,还有那些使用它们来支持其定制框架的应用程序。 所以,我会说,你真的没有错过任何。 尽管有一个弹性搜索具有良好的用户群。
链接地址:
http://www.djcxy.com/p/41271.html
上一篇:
Choosing a stand
下一篇:
What is best and most active open source .Net search technology?