Я использую для поиска плагин в моем проекте Grails,Grails поиска плагин запрос
У меня есть класс домена, как это:
class Item {
...
String dominantColor
String palette
...
static searchable = {
....
only: ['title', 'description' ,'palette' , 'dominantColor']
}
dominantColor является строка, содержащая название цвета как:
Зеленый
палитра является строка, содержащая список цветов, имя, как это:
[ «песок пустыни», «Темно зеленые джунгли», «космическое пространство», «Dim серый», «шифер серый», «Армия зеленый», «Темный электрический синий», «кадет серый», «Темно-каштановый»]
и я пытаюсь искать только элементы с выбранным цветом, я попытался так:
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")
ТНХ femtoRgon: D, это было то, что теперь вы знаете, как искать слова с пространством для Exemple, если я хочу, чтобы искать «темно-серый» ==> термин («Item.dominantColor», «dark gray») не работает –
Я работаю над этой проблемой, добавляя конкатенацию перед вставкой цвета в базу данных, затем я ищу, как этот термин («Item.dominantColor», «darkgray»), но я думаю, что это не лучший или самый чистый метод: p –
Там вам нужно обрабатывать его как фразу, поэтому вы можете использовать что-то вроде: 'querystring:" \ "dark gray \" "' или использовать 'multiPhrase', который вы можете увидеть пример в [Documentation of Query Builder] (http://grails.org/Searchable+Plugin+-+Searching+-+Query+Builder) – femtoRgon