具有逻辑OR的Grails Searchable插件

时间:2011-09-23 23:04:48

标签: grails groovy compass-lucene grails-searchable

我正在使用Searchable插件的查询构建器来尝试构建一个搜索某些内容的查询,并仅返回用户是受众或受众是全局的对象。我想要的代码类似于:

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

但是没有'或'为此,我怎么说我希望我的一个字段有一个术语并且可以使用可搜索的查询构建器DSL满足另外两个条件之一?

这似乎是一个愚蠢的问题,但我已经找了很长一段时间,但找不到答案。

2 个答案:

答案 0 :(得分:2)

我会使用可搜索插件的语法:

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

不确定你对'观众$用户'的意思。

在此查看详细信息: http://grails.org/Searchable+Plugin+-+Searching+-+String+Queries http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Boolean%20operators

答案 1 :(得分:0)

这是一个非常晚的答案,但使用构建器的正确方法是

{
   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