Grails可搜索BigDecimal范围



我有一个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)

如何实现范围搜索?它是哪种数据类型:Integer、BigDecimal、Long,这有关系吗?

感谢

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

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

[编辑]

我以前的解决方案并不完美。用可搜索的数字进行搜索的正确方法,你需要首先在你的域类中添加这个:

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") : "*"  )+ "]"

所有这些都是需要的,因为当你的数据被索引时,也会被文本化。

http://brettscott.wordpress.com/2011/11/19/lucene-number-range-search-integers-floats/

http://grails.org/Searchable+插件+-+常见问题

相关内容

  • 没有找到相关文章

最新更新