我在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")
答案 0 :(得分:1)
我最好的猜测是,您正在分析输入到索引中的值,并且都是小写的。
当您构建查询时,没有分析发生,因此它们不会自动降低。尝试:
term('Item.dominantColor', "green")