Ruby on rails PostgreSql搜索–;显示与查询匹配的文本摘录

Ruby on rails PostgreSql搜索–;显示与查询匹配的文本摘录,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我有一个Rails应用程序,用户可以在其中发布博客文章并搜索文章 在搜索结果中,是否有一种简单的方法显示与查询中的单词匹配的文章摘要 class Article < ActiveRecord::Base def self.description_search(query) if query.present? where("description @@ ?", query) else scoped end end end 类文章

我有一个Rails应用程序,用户可以在其中发布博客文章并搜索文章

在搜索结果中,是否有一种简单的方法显示与查询中的单词匹配的文章摘要

class Article < ActiveRecord::Base
  def self.description_search(query)
    if query.present?
      where("description @@ ?", query)
    else
      scoped
    end
  end
end
类文章
例如,如果我在所有文章中搜索“shark”,我想从以下示例文章中提取类似“…John在阳光下跳鲨鱼…”的内容:

约翰跳上床。约翰跳上床。约翰跳上床。约翰 跳到床上。约翰跳上床。约翰跳上床。约翰跳了起来 这张床。约翰跳上床。约翰跳上床<约翰跳下楼梯 阳光明媚的日子里有鲨鱼。约翰跳上了床


获取摘录(即简要数据) 您可以执行以下操作

@blogs=Blog.where("coloumn like ?",params[:q])
@blogs.each do |blog|
puts blog.article.truncate(10) // this line will truncate text after 10 characters, so u will get a brief data
end

写一些关于你正在尝试做什么以及你到目前为止做了什么的代码?@techdreams好的,我添加了示例代码。这会显示关键字与文章匹配的位置吗?似乎只需要前10个字符。如果文章中的关键词出现在前10个字符之后,那么这似乎不起作用,对吗?它将匹配博客专栏中匹配的关键词,这里你似乎混淆了truncate函数,那么结果将由许多字符组成,因此该函数将用。。。如。。约翰跳床=>约翰跳…谢谢你的快速回复!我更新了这个问题,显示如果“shark”是关键字,我如何返回“shark”周围的10个字符?我认为
blog.article.truncate(10)
只会返回前10个字符。u的意思是,如果有一句话,约翰的船在鲨鱼群的上方??你需要约翰的船和小组的工作??是的,如果“鲨鱼”大约是100个字符,那么我想提取90-110个字符。我想知道PostgreSQL是否有任何自动内置功能来实现这一点。我可以为每个搜索结果手动执行此操作,但这会减慢速度。PostgreSQL有内置的东西吗?