3

Rails で ElasticSearch gem Searchkick を使用しており、次の 2 つの値に基づいて検索を実行したいと考えています。

- params[:full_text_query]
- params[:only_from_this_location]

1 つはすべてのフィールドの全文を検索する必要があり、もう 1 つは 1 つのフィールドに部分的に一致するレコードのみに検索を制限する必要があります。

私はこのようなものが欲しい:

Post.search(params[:full_text_query], where: { location: params[:only_from_this_location] })

ただし、正確な値だけでなく部分的な値も一致させるには、場所フィルターが必要です。「New York」だけでなく、「New York, US」もそうです。SQL で行う %something% のように。

ページネーションのサポートも必要なので、1 つのクエリにする必要があります。

私のオプションは何ですか?

4

2 に答える 2

0

Searchkick のwhereメソッド内で正規表現を使用できます。コードでこのようなものを使用してみてください。

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