3

我将 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 中做的 %something% 一样。

我还需要支持分页,所以它需要在一个查询中。

我有哪些选择?

4

2 回答 2

0

在我当前的项目中,我也在努力解决此类问题,如果您发现任何可以解决 searchckick 中的查询 LIKE 问题的方法,请分享。

但是,关于分页,您可以将以下参数添加到您的行中

Post.search(params[:full_text_query], where: { location: params[:only_from_this_location] }, per_page: 10)
于 2016-01-18T22:12:27.087 回答
0

Searchkick where方法中允许使用正则表达式。尝试在您的代码中使用类似的东西。

Post.search(params[:full_text_query], where: { location: /.*#{params[:only_from_this_location]}.*/ })
于 2016-03-23T04:50:15.117 回答