簡體   English   中英

在Rails中的精確術語搜索

[英]Exact Term Search In Rails

我正在嘗試構建一個基本搜索,其中只有整個確切的搜索詞顯示結果。 目前,它顯示基於單個單詞的結果。

這是模型中的代碼:

def search
  find(:all, :conditions => ['term' == "%#{search}%"])
end

提前抱歉。 我對鐵桿很新!

謝謝。

"%#{search}%"刪除%,這樣就是"#{search}"

%是一個通配符,匹配包含該單詞的每個結果。 因此, "%tea%"會匹配撕裂,nestea和蒸汽,這不是你想要的。

這應該產生完全匹配:

def search find(:all, :conditions => ['term' == "#{search}"]) end

您的代碼因多種原因無效。

  1. 您沒有將任何值傳遞給該方法。 因此search將始終nil
  2. ['term' == "%#{search}%"]條件沒有多大意義,因為 - 正如我之前所說的 - search未定義,因此條件與['term' == "%%"] 字符串term不等於%%因此整個條件基本上是: [false]
  3. Rails 5.0對查詢使用不同的語法。 您使用的語法非常陳舊,不再起作用。

我會做這樣的事情:

# in your model
scope :search, -> (q) { 
  q.present? ? where("column_name LIKE :query", query: "%#{q}%") :none 
}

# in your controller
def set_index 
  @b = Best.search(params[:search]).order(:cached_weighted_score => :desc)
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM