[英]Multi Keyword search on multi-column sql
我嘗試在我的網站上進行多關鍵字搜索。
我想找到每個包含 A 和 B 的帖子。
例如,如果我搜索“ A B ”
我應該找到這些帖子:
標題: A cd B afd
內容:zzzzzz
還有這個
標題:dddd
內容: A ttt B cccd
但不是這個
標題:TTTTT
內容: B wwwww
因為標題或內容沒有我要找的所有關鍵字。
現在我已經提出了這個有效的請求
keys = params[:search].split(' ')
Article.where((["title LIKE ? OR content LIKE ?"] * keys.size).join(' AND '), *(keys.map { |key| ["%#{key}%", "%#{key}%"] }.flatten)).where(activate: true).order(created_at: :desc)
但是 AND 與 OR 的作用相同。 它向我展示了我給出的 3 個例子。
你認為我應該把它分成兩個請求嗎?
導軌 5.2
正如你解釋的那樣,標題應該包含A
和B
,或者內容應該包含A
和B
。
您可以嘗試:
Article
.where("title LIKE '%A%' AND title LIKE '%B%'")
.or(Article.where("content LIKE '%A%' AND content LIKE '%B%'"))
我在這里對 LIKE 的值進行了硬編碼,也許您可以添加一個示例來說明您用來更新它的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.