2010-10-14 2 views
3

Я использую плагин Searchable в своем приложении Grails, но у меня возникают проблемы с его отображением для более чем двух объектов домена при возврате действительных результатов поиска. Я просмотрел документацию плагина Searchable, но не могу найти ответ на мой вопрос. Вот очень простой пример из областей у меня есть:Как подключить Grails к поисковым плагинам через более чем 2 объекта домена?

class Article { 

    static hasMany = [tags: ArticleTag] 

    String title 
    String body 
} 

class ArticleTag { 
    Article article 
    Tag tag 
} 

class Tag { 
    String name 
} 

В конце концов, что я ищу, чтобы сделать, это быть в состоянии найти статьи путем поиска их названия, тела и связанные с ними теги. Заголовки и теги будут также увеличены.

Каков наилучший способ сопоставить эти классы для достижения желаемых результатов?

ответ

3

Возможно, существует другой подход, но это простой подход, который я использовал в своем приложении. Я добавил метод к объекту домена, чтобы получить все строковые значения из тегов и добавить их в индекс со объектом Article.

Это позволяет мне просто искать объект домена статью и получить все, что нужно

class Article { 

    static searchable = { 
     // don't add id and version to index 
     except = ['id', 'version'] 

     title boost: 2.0 
     tag boost:2.0 

     // make the name in the index be tag 
     tagValues name: 'tag' 
    } 

    static hasMany = [tags: ArticleTag] 


    String title 
    String body 

    // do not store tagValues in database 
    static transients = ['tagValues'] 

    // create a string value holding all of the tags 
    // this will store them with the Article object in the index 
    String getTagValues() { 
     tags.collect {it.tag}.join(", ") 
    } 
} 
+0

Это было не совсем то, что я искал, но он работает. Я использую ваше решение, пока не выясню лучший способ. Спасибо за помощь Аарон. – aasukisuki