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