2013-02-27 88 views
0

我有關於搜索插件的一些問題檢索插件:的Grails與標準

我有兩個域名:

class Ads { 
     static searchable = true 
     String fromCity 
     String toCity 
     User user 
    static constraints = { 
    } 
} 
class User { 
    String username 
    String password 
} 

,我已經開發了我自己的搜索頁面有兩個字段(fromCity,toCity)。有類似的東西:

def listResults = searchableService.search("NewYork","Miami") 

所以我想知道我可以給我的搜索方法這個標準領域。

def srchResults = searchableService.search(??????) 

如果有人能幫我做到這一點,我將非常感激。

回答

1

首先,您需要在您的域類中定義可搜索的閉包。例如

static searchable = { 
     analyzer "simple" 
     only = ['firstName','uuid'] 
     firstName boost: 5.0 
    } 

然後您可以搜索如下。

def searchResults = SomeDomain.search(textToSearch + "*" + " -(firstName: ${myName})", params) 

-(firstName: ${myName})這從搜索結果中刪除我的名字,同樣也可以和或根據您的邏輯等領域。

默認運算符是「和」在那裏,你可以修改的操作,請參閱下面的例子

defaultOperator - Either "and" or "or". Default is to defer to the global Compass setting, which is "and" if not otherwise set by you. 

search("mango chutney", defaultOperator: "or") 
// ==> as if the query was "mango OR chutney" 
//  without the option it would be like "mango AND chutney" 

更多細節請查看文檔。 Searchable Plugin Documentation

讓我知道你是否需要任何幫助。

More Help On Compass 請參閱第12.5.1節。查詢字符串語法