Ruby on rails 轮胎不搜索部分关键字
如何在轮胎查询中使用通配符。 我暂时在搜索查询本身中使用*,但它增加了执行时间。 还有别的办法吗?? 我是新手&根本不使用json方法来配置我的elascticsearch 这是我的密码 模特/电影.rbRuby on rails 轮胎不搜索部分关键字,ruby-on-rails,search,
elasticsearch,tire,Ruby On Rails,Search,
elasticsearch,Tire,如何在轮胎查询中使用通配符。 我暂时在搜索查询本身中使用*,但它增加了执行时间。 还有别的办法吗?? 我是新手&根本不使用json方法来配置我的elascticsearch 这是我的密码 模特/电影.rb class Movie < ActiveRecord::Base include Tire::Model::Search include Tire::Model::Callbacks mapping do indexes :title,boost
class Movie < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
mapping do
indexes :title,boost: 10
indexes :year
indexes :author
end
def self.search(params)
#binding.pry
tire.search(load: true) do |s|
s.query {string "*#{params[:query]}*"} if params[:query].present?
s.filter :range,year: {lte: 2004}
end
end
end
class电影
控制器/搜索\u controller.rb
class SearchController < ApplicationController
def index
if(params[:query]).present?
@results=Movie.search(params)
else
@results=[]
end
end
end
class SearchController
view/index.html.erb
<h1>Search#index</h1>
<p>Find me in app/views/search/index.html.erb</p>
<%= form_tag search_index_path, method: :get do %>
<p>
<%= text_field_tag :query, params[:query] %>
<%= submit_tag "Search", name: nil %>
</p>
<% end %>
<% if @results %>
<% @results.each do |fetchresults| %>
<%= fetchresults.title %>
<%= fetchresults.year %>
<%= fetchresults.author %><br/>
<% end %>
<% end %>
Search#索引
在app/views/search/index.html.erb中查找我
<h1>Search#index</h1>
<p>Find me in app/views/search/index.html.erb</p>
<%= form_tag search_index_path, method: :get do %>
<p>
<%= text_field_tag :query, params[:query] %>
<%= submit_tag "Search", name: nil %>
</p>
<% end %>
<% if @results %>
<% @results.each do |fetchresults| %>
<%= fetchresults.title %>
<%= fetchresults.year %>
<%= fetchresults.author %><br/>
<% end %>
<% end %>
例如,我的数据库中有paris&当我搜索“aris”时,它应该在搜索结果中显示paris,默认情况下它不显示任何结果
谢谢。您可以使用“like”,如下所示:
假设您的电影表有一个名为name的属性
@结果=Movie.where(“name like?”,“aris”)Hey Soul,我要的是轮胎,而不是普通的rails查询。