Grails searchable插件查询

时间:2013-09-13 10:17:12

标签: grails lucene searchable

我在grails项目中使用了可搜索的插件,

我有这样的域类:

class Item {
...
String dominantColor
String palette
...

static searchable = {
     ....
    only: ['title', 'description' ,'palette' , 'dominantColor']
}

dominantColor 是一个包含颜色名称的字符串,如:

  

绿色

palette 是一个包含颜色列表的String,如下所示:

  

[“沙漠之沙”,“黑暗丛林绿”,“外太空”,“昏暗的灰色”,“板岩”   灰色“,”军绿“,”暗电蓝“,”学员灰“,”黑栗子“]

我试图只搜索选定颜色的项目,我试过这样:

def searchResult = Item.search({
    must(term("Item.publication", true))
    must(term("Item.Itemlist.isPublished", true))
    must{queryString(query)}
    if(params.color){
        String selectedColor = params.selectedColorName
        must{
            term('Item.dominantColor', selectedColor)
            term('Item.palette', selectedColor)
            }
        }
}).results

但是不起作用,任何人都可以帮我弄清楚我的查询有什么问题吗?

修改 我注意到了

 must{term('proprityName ', value)

不适用于String值,

当我只尝试使用它时,它可以正常工作

  must(term("Item.publication", true))

但是这并没有

  term('Item.dominantColor', "Green")

1 个答案:

答案 0 :(得分:1)

我最好的猜测是,您正在分析输入到索引中的值,并且都是小写的。

当您构建查询时,没有分析发生,因此它们不会自动降低。尝试:

term('Item.dominantColor', "green")