0

给定以下域类:

class Test {
    String name
    Integer val1, val2
}

我目前正在使用以下条件搜索此类:

Test.createCriteria().list(params) {
    params.key.split(' ').each {
        ilike('name', "%${it}%")
    }
    gtProperty('val1', 'val2')
}

我正在尝试使用Grails Searchable Plugin来改进我的搜索结果。更具体地说,它的Query Builder。唯一的问题是我找不到过滤结果的方法 where val1 > val2. 如下图所示:

Test.search(params) {
    must(queryString(params.key))
    must(
        // Something to require that val1 > val2
    )
}

我可以在搜索后过滤它,但它会弄乱分页。

有任何想法吗?

4

1 回答 1

0

这有什么问题?

def result = Test.where {
    it.name = name
    it.val1 > val2
}

编辑:在文档中,它以此为例

search {                    // <-- create an implicit boolean query
    lt("pages", 50)         // <-- uses CompassQueryBuilder#lt, and adds a boolean "should" clause
    term("type", "poetry")  // <-- uses CompassQueryBuilder#term, and adds a boolean "should" clause
}

那么这样的东西对你有用吗?不确定语法,以前从未使用过。

search {                      
    term("name", foo) 
    gt("val1", val2)
}
于 2016-07-15T18:41:30.803 回答