gpt4 book ai didi

ruby-on-rails - 使用Elasticsearch进行Rails预测性搜索表单建议

转载 作者:行者123 更新时间:2023-12-02 23:02:40 25 4
gpt4 key购买 nike

我想在Google样式的下拉菜单中获得预测性搜索建议。我发现Elasticsearch是可行的方法(是吗?),但是在将其实现到我的Rails应用程序时却遇到了一些问题(在Heroku上运行,但这不是问题-至少还没有:)。

我的应用程序非常简单。我有一个“空间”的模型, View 和 Controller ,该空间类似于校园中的房间或建筑物。数据库结构非常简单,它包含一个表(“空格”),其中包含诸如名称,代码,地址之类的详细信息。我希望这些都可以搜索。

我尝试通过以下指南实现Elasticsearch:http://crestcode.com/deploying-elasticsearch-on-heroku-with-rails-4/

因此,目前我基本上已经完成了第4步,但是它不起作用。这些是我的代码,代表指南告诉我要做的部分(原谅缩进):

views / spaces / index.html.erb

<%= form_tag({controller: "spaces", action: "show"}, method: "get", id: 'searchbox', class: "nifty_form") do %>
<%= label_tag(:q, "Search for a building or a room:") %>
...
<%= text_field_tag(:q, params[:q]) %>

routes.rb
resources :spaces
resource :space, only: [:show]

型号/ space.rb
require 'elasticsearch/model'
class Space < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
end
Space.import

controllers / spaces_controller.rb
def show
if params[:q].present?
@space = Space.search(params[:q].split.join(' AND '))
else
@space = []
end
end

错误是:

感谢帮助!

最佳答案

根据我在elasticsearch-model的gem github页面上发现的问题,问题在于您正在对Elasticsearch Response对象调用name方法。您应该在结果文档上调用它。

文件说:

response = Article.search 'fox dogs'
response.results.first._source.title # => "Quick brown fox"

因此,在您的情况下,它将是:
response = Space.search(params[:q].split.join(' AND '))    
@space = response.results.first._source

关于ruby-on-rails - 使用Elasticsearch进行Rails预测性搜索表单建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30356203/

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