2014-01-23 402 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 %> 

爲例如。我在我的數據庫中有巴黎&當我搜索「aris」時,它應該在搜索結果中顯示巴黎,默認情況下它不顯示任何結果。

謝謝。

回答

0

您可以使用 「」,如下所示:

讓我們假設你電影表有一個屬性,叫做

@結果= Movie.where(「名狀?「,」aris「)

+0

嘿靈魂,我特別要求輪胎,不是用於正常的導軌查詢。 – NamingException

+0

哦,好運好夥計! –