3

高度な検索オプションを作成しようとしています ( Twitter のに似ています)。ユーザーは、含まれる単語、除外される単語、含まれる単語、正確なフレーズなどを検索クエリに入力できます。Twitter の高度な検索

私はこれを行うためにSearchkickを使用しています。特殊性Searckickの正規表現検索。

以下は、スローガンに「Facebook以下」という言葉が含まれている企業を見つけるために私が行っていることです。

Company.search("Be", where: { short_desc: /.*(#{ar}).*/ })

これはうまくいきます。しかし、この検索を否定するにはどうすればよいでしょうか。

みたいなことをしてCompany.search("Be", where: { short_desc: /.*(?!(#{ar})).*/ })も結果が出ません。また、含める単語と除外する単語を含む検索を組み合わせることはできますか? サーチキックの例

4

1 に答える 1

3

これはあなたを助けるかもしれません、これを試してください:

Business.search("Be", where: { short_desc: {not: /.*(#{ar}).*/} })

そして、結果を確認してください。ANDこれをorOR演算子と組み合わせることができます。where句を使用する場所。gem の readme ファイルから抜粋:

where: {
  expires_at: {gt: Time.now}, # lt, gte, lte also available
  orders_count: 1..10,        # equivalent to {gte: 1, lte: 10}
  aisle_id: [25, 30],         # in
  store_id: {not: 2},         # not
  aisle_id: {not: [25, 30]},  # not in
  user_ids: {all: [1, 3]},    # all elements in array
  category: /frozen .+/,      # regexp
  or: [
    [{in_stock: true}, {backordered: true}]
  ]
}

これは、クエリと組み合わせる方法です。

お役に立てれば。

于 2015-08-05T06:04:46.813 に答える