我对可搜索的插件有一些疑问:
我有两个域名:
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(??????)
如果有人可以帮助我这样做,我将非常感激。
答案 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节。查询字符串语法