【发布时间】:2015-06-15 16:48:34
【问题描述】:
我找到了 Elasticsearch gem 并想使用它。例如我有:
app/controller/search_controller.rb中的方法:
def search
if params[:q].nil?
@articles = []
else
@articles = Article.search params[:q]
end
end
查看app/views/search/search.html.erb:
<h1>Articles Search</h1>
<%= form_for search_path, method: :get do |f| %>
<p>
<%= f.label "Search for" %>
<%= text_field_tag :q, params[:q] %>
<%= submit_tag "Go", name: nil %>
</p>
<% end %>
<ul>
<% @articles.each do |article| %>
<li>
<h3>
<%= link_to article.title, controller: "articles", action: "show", id: article._id%>
</h3>
</li>
<% end %>
</ul>
并在config/routes.rb搜索路线:
get 'search', to: 'search#search'
我想创建高级搜索。
例如,当我在搜索行中写#cucumber 时,我想得到以下行:localhost:3000/tagged?tag=cucumber。
我有必要按标签显示产品。怎么做?
【问题讨论】:
-
如果您想将输入
#cucumber解释为“按标签黄瓜搜索”,则必须手动进行。它与弹性搜索无关。除此之外,您还必须为文章创建弹性搜索索引,设置模型文章回调以更新索引并为您的搜索场景构建查询。另请参阅 elasticsearch-rails 和 elasticsearch-model 的文档。
标签: ruby-on-rails ruby search