2016-07-15 1 views
0

Учитывая следующий класс домена:Как я могу сравнить Тхо свойство, используя Grails плагиных с возможностью поиска

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

Что случилось с этим?

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) 
} 
+0

Ну, я бы хотел улучшить результаты поиска с помощью Compass Engine, предоставляемого плагином для поиска. Таким образом, я могу сортировать результаты в соответствии с их сходством с строкой запроса, предлагать новый запрос, если найдено слишком мало результатов и т. Д. – ylima

+0

Отредактирован мой вопрос, чтобы уточнить его немного больше – ylima

+0

@ylima Я добавил больше ответа – zero01alpha

Смежные вопросы