Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Elasticsearch高级搜索_Ruby On Rails_Ruby_Search - Fatal编程技术网

Ruby on rails Elasticsearch高级搜索

Ruby on rails Elasticsearch高级搜索,ruby-on-rails,ruby,search,Ruby On Rails,Ruby,Search,我找到Elasticsearch gem并想使用它。例如,我有: app/controller/search\u controller.rb中的方法: def search if params[:q].nil? @articles = [] else @articles = Article.search params[:q] end end <h1>Articles Search</h1> <%= form_for search_pa

我找到Elasticsearch gem并想使用它。例如,我有:

app/controller/search\u controller.rb中的方法:

def search
  if params[:q].nil?
    @articles = []
  else
    @articles = Article.search params[:q]
  end
end
<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>
get 'search', to: 'search#search'
查看
app/views/search/search.html.erb

def search
  if params[:q].nil?
    @articles = []
  else
    @articles = Article.search params[:q]
  end
end
<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>
get 'search', to: 'search#search'
我想创建高级搜索。 例如,当我在搜索行中写入
#cumber
时,我希望得到以下行:
localhost:3000/taged?tag=cumber

我有必要用标签展示产品。如何做到这一点?

我更愿意在你的行动中做到这一点

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

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

我更愿意在您的操作中使用此标记

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

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

如果您想将输入的
#cumber
解释为“按标记cumber搜索”,则必须手动执行。这与弹性搜索无关。除此之外,您还必须为文章创建elasticsearch索引,设置模型文章回调以更新索引,并为您的搜索场景生成查询。另请参阅和的文档。如果您想将输入的
#cumber
解释为“按标记cumber搜索”,则必须手动执行。这与弹性搜索无关。除此之外,您还必须为文章创建elasticsearch索引,设置模型文章回调以更新索引,并为您的搜索场景生成查询。另请参阅和的文档。如果您想将输入的
#cumber
解释为“按标记cumber搜索”,则必须手动执行。这与弹性搜索无关。除此之外,您还必须为文章创建elasticsearch索引,设置模型文章回调以更新索引,并为您的搜索场景生成查询。有关和,请参见文档。