我正在使用ElasticSearch gem Searchkick和Rails,我想基于2个值执行搜索:
- params[:full_text_query]
- params[:only_from_this_location]
应该在所有字段上搜索全文,而另一个应该仅将搜索限制为部分匹配一个字段的记录。
我想要这样的事情:
Post.search(params[:full_text_query], where: { location: params[:only_from_this_location] })
但是我需要位置过滤器不仅要匹配精确值,还要匹配部分值。所以不仅“纽约”,还有“纽约,美国”。就像在%SQL中你会做的那样。
我还需要支持分页,因此需要在一个查询中。
我有什么选择?
答案 0 :(得分:2)
允许在Searchkick 中使用正则表达式方法。尝试在代码中使用类似的东西。
Post.search(params[:full_text_query], where: { location: /.*#{params[:only_from_this_location]}.*/ })
答案 1 :(得分:0)
我在当前的项目中也遇到了这类问题,如果你发现了解决查询中的任何问题LIKE问题,请分享。
然而,关于分页,您可以将以下参数添加到您的行
Post.search(params[:full_text_query], where: { location: params[:only_from_this_location] }, per_page: 10)