gpt4 book ai didi

ruby-on-rails - Rails 按标题、正文和标签搜索帖子

转载 作者:搜寻专家 更新时间:2023-10-30 23:30:45 25 4
gpt4 key购买 nike

抱歉英语不好:)

我在应用程序中遇到了问题。我想通过帖子标题、帖子文本及其标签实现帖子搜索,我有一个搜索表单,我希望显示所有在标题或文本或标签中包含该词的帖子,但现在它的工作方式不同了,例如,我有 2 个帖子:

其中一个在标题中包含单词“hello”,另一个具有标签“hello”,我想显示这两个帖子,但现在只显示带有标签的帖子,而标题中带有“你好”一词的第二个帖子被忽略了,我不知道为什么。我知道我的 Post.search 方法有问题。

请帮助我,在此先感谢!

这是我的代码:

后.rb:

class Post < ApplicationRecord
mount_uploader :image, ImageUploader
validates :body, presence: true, length: { maximum: 500}
validates :title, presence: true, length: { maximum: 50}
validates :adress, length: { maximum: 50}

belongs_to :user
has_many :taggings
has_many :tags, through: :taggings
has_many :comments, dependent: :destroy
has_many :favorites, dependent: :destroy

def self.search(keywords)
if keywords
joins(:tags).where("lower (title) ILIKE :value OR
lower (body) ILIKE :value OR
lower (tags.name) ILIKE :value",
value: "%#{keywords.downcase}%")
else
all.order("created_at DESC")
end
end
end

后 Controller 索引操作:

def index
@posts = Post.search(params[:keywords]).uniq
end

最佳答案

尝试以下操作

选项一

Post.includes(:tags).where("lower (posts.title) ILIKE :value OR 
lower (posts.body) ILIKE :value OR
lower (tags.name) LIKE :value",
value: "%#{params[:keywords].downcase}%" ).references(:tags)

或者像这样直接指向你的 Controller 索引操作

方案二

def index
if params[:keywords].present?
@posts = Post.includes(:tags).where("lower (posts.title) ILIKE :value OR
lower (posts.body) ILIKE :value OR
lower (tags.name) LIKE :value",
value: "%#{params[:keywords].downcase}%" ).references(:tags)
else
@posts = Post.all.order(created_at: :DESC)
end
end

方案三

def index
if params[:keywords].present?
@posts = Post.where('true')
@posts = @posts.where('lower (title) ILIKE' => "%#{params[:keywords]}%")
@posts = @posts.where('lower (body) ILIKE' => "%#{params[:keywords]}%")
@posts = @posts.includes(:tags).where('lower (tags.name)' => "%#{params[:keywords]}%")
@posts = @posts.order(created_at: :DESC).uniq
else
@posts = Post.all.order(created_at: :DESC)
end
end

对于复合搜索,您可以看到这个 RailsCast pg_search 教程

希望对您有所帮助。

关于ruby-on-rails - Rails 按标题、正文和标签搜索帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49381876/

25 4 0