grails - 具有条件的Grails可搜索插件

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

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

最佳答案

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

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节。查询字符串语法

关于grails - 具有条件的Grails可搜索插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15108218/

相关文章:

grails - GSP中的Grails访问映射变量,在值周围带有多余的括号

grails - 命令对象数据绑定(bind)

Grails 命名查询 : find parents of child A and child B

grails - JDBC存储中的共享Compass/Lucene索引

c++ - 如何在 C++ 中存储数据并使数据可搜索?

grails - Grails GORM MongoDB插件中是否有类似可搜索的search()方法的类似方法?

javascript - 如何从 Javascript 访问我的 groovy/grails 值

grails - Grails反向网址映射:有没有一种方法可以根据当前匹配的路线建立链接?

hibernate - GORM条件查询过滤列表中的ID

java - 当使用表示对象集合的字段时,如何使用过滤表达式创建规范?