6

Couden't找到与黑子(Solr)相关的任何比较问题到弹性搜索(Lucene) 在两个搜索引擎上,pro和con会是什么?弹性搜索与功能上的太阳黑子比较

我看到了其他VS问题,以便在比较2个宝石时获得更好的内部,所以希望这可以让新手们(如我)在两个引擎中获得更好的洞察力。我已经看过太阳黑子,但有一些问题。所以我搜索

VS

+0

Solr是Lucene之上的一个服务层。这取决于你想如何建筑师。 – 2012-02-06 14:51:10

+1

更适合的比较问题是Solr vs ElasticSearch,或者Sunspot vs Tire。 – 2012-02-06 17:38:00

回答

8

我想你应该寻找Solr的弹性和搜索之间的比较。实际上,太阳黑子是基于Solr的,Solr和弹性搜索都基于Lucene。他们是两个具有类似目标的不同项目,都建立在Lucene之上。

这里有两个比较:

ElasticSearch, Sphinx, Lucene, Solr, Xapian. Which fits for which usage?

http://www.findbestopensource.com/article-detail/solr-vs-elasticsearch

+0

好吧,我不知道他们都基于Lucene,与很多信息很好的链接非常感谢张贴。 – Rubytastic 2012-02-09 18:40:25

+0

不客气!总是乐于帮助! – javanna 2012-02-09 18:43:06

10

我开始对需要全文搜索在Ruby中的一个项目工作,所以自然我使用Solr +黑子,但我不能让它工作。这是一个痛苦,只是让他们连接,然后试图找出文档是否索引正确,找出运行时类路径,以便我可以添加额外的分析器/标记器类,编辑config.xml/schema.xml等。Solr numDocs清楚说它收到并索引它们,但我无法获得任何查询结果。几天后我放弃了,这真是一种地狱般的配置。

ElasticSearch + Tyre是一件轻松愉快的工具,我在一个小时内就可以正常工作。

Lucene仅仅是一个Java搜索库,因此Solr被开发成为一个全面的服务搜索应用程序,但Solr仍然有一个典型的Java Web应用程序的所有陷阱:过于复杂的XML配置,架构沉重,期望XML文档索引,需要一个Java servlet容器(Jetty或Tomcat),这对我来说只是太多的失败点。 ElasticSearch也是基于Lucene的,它有一个内置的servlet容器,所以就像守护进程一样运行,使用非常直接的JSON + REST API,因此它非常适合测试,更适合Ruby。它是无模式的,它甚至可以在没有编辑配置文件的情况下工作。一切都很好。

我真正需要的是中文搜索和ElasticSearch已经将Luecene的SmartChineseAnalyzer作为插件打包。如果您需要这种级别的自定义,则不确定定制分析器/标记器链会有多困难。 ElasticSearch和Tyre的Docmentation都是一流的。

轮胎(Ruby库的ElasticSearch)

https://github.com/karmi/tire

您可以尝试演示,它会安装一个导轨searchapp,下载ElasticSearch二进制和运行它,然后自动启动的WEBrick。

$ rails new searchapp -m https://raw.github.com/karmi/tire/master/examples/rails-application-template.rb 

在我的系统也抱怨没有一个Javascript引擎(Rails的3.2不再包括默认thereubyracer宝石?),所以我必须:

$ wget https://raw.github.com/karmi/tire/master/examples/rails-application-template.rb 
$ nano rails-application-template.rb 

在添加宝石“therubyracer”文件(寻找宝玉“轮胎”和宝石“will_paginate”),然后......

$ rails new searchapp -m rails-application-template.rb 

为了开发自己的应用程序,我只是downladed的ElasticSearch压缩包,并在前台使用-f开关运行(这样我可以轻松地st OP它按Ctrl-C)

$ bin/elasticsearch -f 

可以安装eleasticsearch头插件获得Web管理界面

https://github.com/mobz/elasticsearch-head

也未尝我发现:如果你有一对一很多关系模型,Tire无法在搜索结果中为你解决它,它只是返回一个平面集合。你的has_many和belongs_to关系只是集合中的对象id,而不是完整的对象。