Как я могу сравнить свойства, используя Grails 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 ответ
Что с этим не так?
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)
}