【问题标题】:Grails Searchable Plugin with a logical OR具有逻辑 OR 的 Grails 可搜索插件
【发布时间】:2011-09-23 23:04:47
【问题描述】:

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

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

但是对此没有“或”,我怎么说我希望我的一个字段有一个术语,并且满足可搜索的查询构建器 DSL 的其他两个条件之一?

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

【问题讨论】:

    标签: grails groovy compass-lucene grails-searchable


    【解决方案1】:

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

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

    但不确定您对“audience$user”的含义。

    详情请看这里: http://grails.org/Searchable+Plugin+-+Searching+-+String+Queries http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Boolean%20operators

    【讨论】:

    • 是的,我以前使用过这种方法,这次我尝试了另一种方法,但看起来我可能会退回到字符串搜索。
    • 我最终还是选择了这个,所以我会接受它作为答案。
    【解决方案2】:

    这是一个很晚的答案,但构建器的正确方法是

    { 必须(术语(“内容”,内容)) 必须 { 术语(“到达”,“全球”) term('audience$user', 用户) } }

    除此之外,我也不确定您对 audience$user 的意思。
    http://grails.1312388.n4.nabble.com/Searchable-plugin-s-query-builder-nested-or-query-td1388307.html

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      相关资源
      最近更新 更多