Как мне сопоставить подключаемый модуль Grails Searchable для более чем двух доменных объектов? - PullRequest
3 голосов
/ 15 октября 2010

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

class Article {

     static hasMany = [tags: ArticleTag]

     String title
     String body
}

class ArticleTag {
     Article article
     Tag tag
}

class Tag {
     String name
}

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

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

1 Ответ

3 голосов
/ 15 октября 2010

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

Это позволяет мне просто искать объект домена 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(", ")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...