Elasticsearch高级搜索

时间:2015-06-15 16:48:34

标签: ruby-on-rails ruby search

我找到了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。 我需要按标签显示产品。怎么做?

1 个答案:

答案 0 :(得分:0)

我宁愿在你的行动中这样做。

tags = params[:q].present? ? params[:q].scan(/#[^ #]+/).collect{|tag| tag.gsub(/#/, '')} : []

现在您可以在搜索功能中使用此数组标记