gpt4 book ai didi

ruby-on-rails - Elastic Search 与 Sunspot 的功能比较

转载 作者:行者123 更新时间:2023-11-29 02:46:59 24 4
gpt4 key购买 nike

找不到任何与 sunspot (Solr) 和 Elastic Search (Lucene) 相关的比较问题这两个搜索引擎的优缺点是什么?

我看到其他 VS 问题可以在 2 个 gem 的比较中获得更好的内部信息,所以希望这可以让新手(像我一样)更好地了解这两个引擎。我已经看过太阳黑子了,但有一些问题。所以我搜索了

对比

最佳答案

我开始从事一个需要在 Ruby 中进行全文搜索的项目,所以很自然地我开始使用 Solr + Sunspot,但我无法让它工作。只是让它们连接起来很痛苦,然后试图弄清楚文档索引是否正确,弄清楚运行时类路径,这样我就可以添加额外的分析器/标记器类,编辑 config.xml/schema.xml 等。Solr numDocs 清楚说它收到并为它们编制了索引,但我无法获得任何查询结果。几天后我就放弃了,这有点像配置 hell 。

ElasticSearch + Tire 的启动和运行轻而易举,我在一个小时内就开始工作了。

Lucene 只是一个 Java 搜索库,因此 Solr 被开发成一个提供全面服务的搜索应用程序,但 Solr 仍然具有典型 Java web 应用程序的所有陷阱:过于复杂的 XML 配置、大量模式、期望 XML 文档用于索引,需要一个 Java servlet 容器(Jetty 或 Tomcat),这对我来说已经成为太多的故障点。

ElasticSearch 也基于 Lucene,它有一个内置的 servlet 容器,因此就像守护进程一样运行,使用非常直接的 JSON + REST API,因此它非常适合测试并且更适合 Ruby。它是无模式的,甚至无需编辑配置文件就可以为我工作。一切都很顺利。

我真正需要的是中文搜索,而 ElasticSearch 已经将 Luecene 的 SmartChineseAnalyzer 打包为一个插件。如果您需要那种级别的定制,不确定定制分析器/分词器链会有多困难。 ElasticSearch 和 Tire 的文档都是一流的。

Tire(用于 ElasticSearch 的 Ruby 库)

https://github.com/karmi/tire

您可以试用该演示,它会安装一个 Rails 搜索应用程序,下载 ElasticSearch 二进制文件并运行它,然后自动启动 Webrick。

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

在我的系统上,它提示没有 Javascript 引擎(Rails 3.2?默认情况下不再包含 thereubyracer gem),所以我不得不:

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

在文件中添加 gem 'therubyracer'(查找 gem 'tire' 和 gem 'will_paginate'),然后...

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

为了开发我自己的应用程序,我只是下载了 ElasticSearch tarball 并使用 -f 开关在前台运行(这样我可以通过 Ctrl-C 轻松停止它)

$ bin/elasticsearch -f

您可以安装 eleasticsearch-head 插件来获取 Web 管理界面

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

我还发现了一些事情:如果您有一对多关系模型,Tire 不会在搜索结果中为您解析它们,它只会返回一个平面集合。您的 has_many 和 belongs_to 关系只是集合中的对象 ID,而不是完整的对象。

关于ruby-on-rails - Elastic Search 与 Sunspot 的功能比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9160305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com