我在 Heroku 上的 Rails 应用程序中设置了 pg_search:
@query = 'fast'
PgSearch.multisearch(@query) #=>
[#<PgSearch::Document searchable: ferrari, :content: 'this car is really fast'>,
#<PgSearch::Document searchable: viper, :content: 'a very fast car'>]
我想用摘录显示这些结果,content
以显示匹配发生的位置。当只有一个词时,我可以调用excerpt(content, @query)
以获得我想要的确切内容,但只处理完全匹配,所以如果:@query
excerpt()
@query = 'car fast'
PgSearch.multisearch(@query) #=>
[#<PgSearch::Document searchable: ferrari, :content: 'this car is really fast'>,
#<PgSearch::Document searchable: viper, :content: 'a very fast car'>]
thenexcerpt(content, @query)
为 nil,因为在任何地方都content
没有出现确切的短语“car fast”。
我考虑excerpt(content, @query.split(' ').first)
至少为多词查询显示一些东西,但仍然存在这样的情况:
@query = 'car?'
@results = PgSearch.multisearch(@query) #=>
[#<PgSearch::Document searchable: ferrari, :content: 'this car is really fast'>,
#<PgSearch::Document searchable: viper, :content: 'a very fast car'>]
excerpt(@results.first.content, @query) #=> nil
那么,人们在使用 pg_search 时如何显示搜索结果的摘录?