2014-01-23 2 views
0

Как использовать подстановочный знак в запросах на шины. Временно я использую * в самом поисковом запросе, но увеличивает время его выполнения. Есть ли другой способ? Я новичок & не использовал json методы для настройки моего elascticsearch.Шина не ищет частичное ключевое слово

вот мой код.

модели/movie.rb

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 

контроллер/search_controller.rb

class SearchController < ApplicationController 
    def index 
    if(params[:query]).present? 
    @results=Movie.search(params) 
    else 
    @results=[] 
    end 
    end 
end 

вид/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 в результатах поиска, по умолчанию он не показывает никаких результатов.

Спасибо.

ответ

0

Вы можете использовать "как", как следующее:

давайте предположим, что вы фильм таблица атрибут называется имя

@ результатов = Movie.where ("имя как ? "," aris ")

+0

Hey Soul, я спрашиваю конкретно о шине, а не о запросе обычных рельсов. – NamingException

+0

oh ok удачи чувак! –

Смежные вопросы