2013-09-13 1 views
0

Я использую для поиска плагин в моем проекте 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") 

ответ

1

Моя лучшая догадка заключается в том, что ваши значения, вводимые в индекс, анализируются и все нижние.

Когда вы строите свои запросы, анализ не происходит, поэтому они не будут автоматически уменьшаться. Попробуйте:

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

ТНХ femtoRgon: D, это было то, что теперь вы знаете, как искать слова с пространством для Exemple, если я хочу, чтобы искать «темно-серый» ==> термин («Item.dominantColor», «dark gray») не работает –

+0

Я работаю над этой проблемой, добавляя конкатенацию перед вставкой цвета в базу данных, затем я ищу, как этот термин («Item.dominantColor», «darkgray»), но я думаю, что это не лучший или самый чистый метод: p –

+1

Там вам нужно обрабатывать его как фразу, поэтому вы можете использовать что-то вроде: 'querystring:" \ "dark gray \" "' или использовать 'multiPhrase', который вы можете увидеть пример в [Documentation of Query Builder] (http://grails.org/Searchable+Plugin+-+Searching+-+Query+Builder) – femtoRgon