1

grails アプリケーションで検索可能なプラグインを使用して、次の方法で「Offering」インスタンスを検索しています。

オファリング クラスで次のマッピングを使用してセットアップを検索します

class Offering {

    static searchable = {
        only: ['title', 'description']
    }

    String title
    String description

    Category category
    Location location

    BigDecimal price
    PricePeriod pricePeriod

    static belongsTo = [user: SecUser]

    static constraints = {
        title(blank: false, maxSize: 100)
        description(blank: false, maxSize: 10240)
        category(nullable: false)
        location(nullable: false)
        price(nullable: true, scale: 2)
        pricePeriod(nullable: true)
    }

    public String toString() {
        return title
    }

}

検索可能なサービスへの呼び出し

 def search = {
    must(queryString(params.query))
 }

 def searchResult = searchableService.search(search, params)

予想どおり、これにより、オファリング インスタンスのマップされたプロパティから適切なヒットが返されます。お供え物集

ここでやりたいことは、検索クエリだけでなく、location の Offerings 子要素でも検索することです。具体的には、子 Location インスタンス内の「locationName」フィールドです。

したがって、クエリ「ディナー」と場所「ブリスベン」で検索すると、「ブリスベン」に一致する「locationName」プロパティを持つ子ロケーション インスタンスで「ディナー」に一致するオファリングのコレクションを取得したいと考えています。

検索可能なプラグインを使用して、このようなものをどこから実装し始めるかについてのアイデアはありますか?

ロケーションクラス

class Location {

    String locationName
    Location locationParent
    String postcode

    static hasMany = [locations: Location]

    static constraints = {
        locationName(blank: false, unique: true)
        locationParent(nullable: true)
        postcode(nullable: true)
    }

    public String toString() {
        return locationName
    }
}

ご協力いただきありがとうございます

4

1 に答える 1

0

あなたがやりたいことは、次のようなものだと思います:

class Offering {

   ...

   static searchable = {
       only: ['title', 'description']
       location component: true
   }

   ...
}

class Location {

    ...

    static searchable = {
       only: ['locationName']
       location component: true
    }

    ...
}
于 2012-07-09T23:34:16.483 に答える