我正在尝试建立一个高级搜索选项(类似于Twitter's)。用户可以在搜索查询中输入包含的单词,排除的单词,包含的单词,确切短语等。 ruby-on-rails - Searchkick和正则表达式-LMLPHP

我正在使用Searchkick来做到这一点。特殊性Searckick's regexp搜索。

这是我在寻找标语中带有“等于或少于Facebook”字样的公司的工作。
Company.search("Be", where: { short_desc: /.*(#{ar}).*/ })
这很好。但是,我如何对搜索结果做否定的决定?

Company.search("Be", where: { short_desc: /.*(?!(#{ar})).*/ })这样的操作不会产生结果。另外,我可以结合使用要包含单词和要排除单词的搜索吗?
ruby-on-rails - Searchkick和正则表达式-LMLPHP

最佳答案

可能对您有帮助,请尝试以下操作:

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

并检查结果。您可以将其与ANDOR运算符结合使用。在任何地方使用where子句。从gem自述文件中提取:
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}]
  ]
}

这是将其与查询结合的方式。

希望这可以帮助。

关于ruby-on-rails - Searchkick和正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31824354/

10-11 01:55