【问题标题】:How can I compare tho properties using grails Searchable Plugin如何使用 grails Searchable Plugin 比较属性
【发布时间】:2016-07-15 16:23:10
【问题描述】:

给定以下域类:

class Test {
    String name
    Integer val1, val2
}

我目前正在使用以下条件搜索此类:

Test.createCriteria().list(params) {
    params.key.split(' ').each {
        ilike('name', "%${it}%")
    }
    gtProperty('val1', 'val2')
}

我正在尝试使用Grails Searchable Plugin 来改进我的搜索结果。更具体地说是它的Query Builder。唯一的问题是我找不到过滤val1 > val2 的结果的方法。如下图:

Test.search(params) {
    must(queryString(params.key))
    must(
        // Something to require that val1 > val2
    )
}

我可以在搜索后过滤它,但它会弄乱分页。

有什么想法吗?

【问题讨论】:

    标签: grails grails-2.0 searchable-plugin


    【解决方案1】:

    这是怎么回事?

    def result = Test.where {
        it.name = name
        it.val1 > val2
    }
    

    编辑: 在文档中,它将此作为示例显示

    search {                    // <-- create an implicit boolean query
        lt("pages", 50)         // <-- uses CompassQueryBuilder#lt, and adds a boolean "should" clause
        term("type", "poetry")  // <-- uses CompassQueryBuilder#term, and adds a boolean "should" clause
    }
    

    那么这样的东西对你有用吗?不知道语法,以前没用过。

    search {                      
        term("name", foo) 
        gt("val1", val2)
    }
    

    【讨论】:

    • 好吧,我想使用可搜索插件提供的指南针引擎来改进我的搜索结果。这样我可以根据它与查询字符串的相似性对结果进行排序,如果找到的结果太少建议一个新的查询等等
    • 编辑了我的问题以进一步澄清它
    • @ylima 我在答案中添加了更多内容
    • 是的。我需要这样的东西。但我需要比较两个属性而不是一个属性和一个常量
    猜你喜欢
    • 2013-02-22
    • 2012-11-23
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多