带有Criteria的Grails Searchable插件

时间:2013-02-27 09:16:39

标签: grails criteria searchable

我对可搜索的插件有一些疑问:

我有两个域名:

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") 

所以我想知道如何将我的搜索方法提供给Criteria Field。

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

如果有人可以帮助我这样做,我将非常感激。

1 个答案:

答案 0 :(得分: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节。查询字符串语法