0

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

我有两个域:

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(??????) 

如果有人可以帮助我做到这一点,我将不胜感激。

4

1 回答 1

1

首先,您需要在域类中定义一个可搜索的闭包。例如

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

然后你可以搜索如下。

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

-(firstName: ${myName})这会从搜索结果中删除我的名字,类似地,您可以根据您的逻辑或其他字段。

默认运算符是“and”,您可以在其中修改运算符,请参见以下示例

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"

有关更多详细信息,请参阅文档。 可搜索的插件文档

如果您需要任何帮助,请告诉我。

指南针的更多帮助 请参阅第 12.5.1 节。查询字符串语法

于 2013-03-05T10:15:33.830 回答