如何使用Grails Searchable Plugin比较属性

时间:2016-07-15 16:23:10

标签: grails grails-2.0 searchable-plugin

给出以下域类:

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。唯一的问题是我无法找到一种方法来过滤val1 > val2的结果。如下图所示:

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

我可以在搜索后对其进行过滤,但这样会造成分页。

有什么想法吗?

1 个答案:

答案 0 :(得分: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)
}