Search Grails可搜索搜索大十进制范围

Search Grails可搜索搜索大十进制范围,search,grails,range,searchable,Search,Grails,Range,Searchable,我有一个Grails项目,其域有多个字段,其中我有字段“price”。 我将可搜索插件添加到项目中,通过常规搜索,它运行良好: def searchResults = searchableService.search(params.q, params) 现在我需要通过范围添加价格搜索。示例:价格在100美元到200美元之间。 我尝试了以下操作,但不起作用: def searchResults = searchableService.search({ queryString(params

我有一个Grails项目,其域有多个字段,其中我有字段“price”。 我将可搜索插件添加到项目中,通过常规搜索,它运行良好:

def searchResults = searchableService.search(params.q, params)
现在我需要通过范围添加价格搜索。示例:价格在100美元到200美元之间。 我尝试了以下操作,但不起作用:

def searchResults = searchableService.search({
    queryString(params.q)
    lt("price", params.pmax?.trim().toBigDecimal())
},params)
如何实现范围搜索? 它是什么类型的数据类型重要吗:整数、BigDecimal、Long


谢谢

我按范围进行了如下搜索:

def searchResults = searchableService.search(params){
    must(queryString(params.q) {
        ge('price', params.pmax as BigDecimal)
        le('price', params.pmin as BigDecimal)
    })
}
[已编辑]

我以前的解决方案并不完美。 使用searchable进行数字搜索的正确方法是,首先需要在域类中添加以下内容:

searchable {
     price index: "not_analyzed", format : "0000000000"
}
然后进行搜索:

def searchResults = yourDomainClass.search("price:[" + (params.pmin ? params.pmin.trim().padLeft(10, "0") : "*"  )+ " TO " + (params.pmax ? params.pmax.trim().padLeft(10, "0") : "*"  )+ "]"
所有这些都是必需的,因为当您的数据被索引时,也会被文本化