我已经在 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'>]
then excerpt(content, @query)
为零,因为没有地方content
是否出现了确切的短语“汽车快”。
我考虑过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 时如何显示搜索结果的摘录呢?