给出以下域类:
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
)
}
我可以在搜索后对其进行过滤,但这样会造成分页。
有什么想法吗?
答案 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)
}