Плагин Grails для поиска с логическим ИЛИ - PullRequest
0 голосов
/ 24 сентября 2011

Я использую конструктор запросов плагина Searchable, чтобы попытаться создать запрос, который ищет некоторый контент и возвращает только те объекты, аудитория которых у пользователя или глобальная.Код, который я хотел бы иметь, был бы похож на:

{
  term("content", content)
  or {
    term('reach', 'global')
    term('audience$user', User)
  }
}

Но для этого нет «или», как мне сказать, что я хочу, чтобы в одном из моих полей был термин И имел один издва других условия встретились с конструктором запросов для поиска DSL?

Это кажется глупым вопросом, но я долго искал и не могу найти ответ.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Я бы использовал грамматику поискового плагина:

search("+content:${content} +(reach:global OR audience.user.id:${user.id})")

Не уверен, что вы имели в виду под "аудиторией $ user".детали: http://grails.org/Searchable+Plugin+-+Searching+-+String+Queries http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Boolean%20operators

0 голосов
/ 25 января 2012

Это очень поздний ответ, но правильный путь со строителем будет

{
   must(term("content", content))
   must {
      term('reach', 'global')
      term('audience$user', User)
   }
}

Кроме этого, я также не уверен, что вы имеете в виду под аудиторией $ user .
Смотри http://grails.1312388.n4.nabble.com/Searchable-plugin-s-query-builder-nested-or-query-td1388307.html

...