2016-07-15 78 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

那麼,我想用Searchable Plugin提供的Compass引擎來改進我的搜索結果。這樣我可以根據它與查詢字符串的相似性對結果進行排序,如果找到的結果太少,建議一個新的查詢等 – ylima

+0

編輯我的問題,以澄清它更多 – ylima

+0

@ylima我在答案中增加了更多 – zero01alpha