0

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

我有一个这样的域类:

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

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

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

绿色的

调色板 是一个包含颜色列表的字符串,如下所示:

[“沙漠沙”、“深丛林绿”、“外太空”、“暗灰色”、“板岩灰”、“军绿色”、“深电蓝”、“军校灰”、“深栗色”]

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

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)

不适用于字符串值,

当我只尝试这个时,它可以工作

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

但这并没有

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

1 回答 1

1

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

但是,当您构建查询时,不会发生任何分析,因此它们不会自动小写。尝试:

term('Item.dominantColor', "green")
于 2013-09-13T16:17:09.800 回答