grailsgroovygrails-searchable

grails searcheable plugin search in inner hasMany class


Hello I am reading the standard documentation for grails searcheable plugin at http://grails.org/Searchable+Plugin+-+Mapping+-+Class+Property+Mapping It describes searcheable references and components in that.

In the classic scenario discussed on the page if I have

class News {
    static searchable = true
    static hasMany = [comments: Comment]
    String text
}

and

class Comment {
    static searchable = true
    String text
}

If I am searching by News.search("a phrase", params) what do I have to change in this query so that "a phrase" is searched into news as well as comments of news?


Solution

  • try to configure comments as component:

    class News {
      static searchable = true
      static hasMany = [comments: Comment]
      String text
      static searchable = {
        comments component: [prefix:'comment']
      }
    }
    

    This allows you to search for a specific comments through News.search("componenttext:phrase", params), but afaik, News.search("a phrase", params) will also search through the comments.

    btw: have you already discovered luke? http://code.google.com/p/luke/ This tool will help you a lot while working with the lucene index. For instance, it shows you how lucene sees you grails domain class.