选择一个展位

我正在寻找具有以下属性的独立全文搜索服务器:

  • 必须作为可以服务来自多个客户端的搜索请求的独立服务器运行
  • 必须能够通过索引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?