ElasticSearch / Searchkick - LIKE查询

时间:2015-06-18 03:36:37

标签: ruby database ruby-on-rails-3 elasticsearch searchkick

我正在使用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中你会做的那样。

我还需要支持分页,因此需要在一个查询中。

我有什么选择?

2 个答案:

答案 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)