0

私はグレイルズを使用していsearchable plugin(0.6.4)ます。プライバシー設定に基づいてメンバーを検索する必要があります。以下はデータベースの設計です。メンバーはMemberProfile, and MemberProfile has PrivacySettings

class Member extends {
        String firstName
        String lastName
    static searchable = {
        analyzer "simple"
        only = ['firstName', 'lastName']
        firstName boost: 5.0
        profile component: true
        profile reference: true
    }
    static hasOne = [profile: MemberProfile]
}
class MemberProfile {
    static searchable = {
        analyzer "simple"
        only = ['currentCity', 'currentCountry']
        privacySettings component: true
    }

        static hasMany = [privacySettings:PrivacySettings]
    String currentCity
    String currentCountry
    List<PrivacySettings> privacySettings
}
//For instance Privacy Settings contains 
//fieldSectionName: firstName , connectionLevel: true , memberLevel: false
// This means firstName will be shown to only members' friends(connection)
class PrivacySettings {

    static searchable = {
        analyzer "simple"
        only = ['fieldSectionName', 'connectionLevel', 'memberLevel']
    }
    String fieldSectionName
    boolean connectionLevel
    boolean memberLevel
}

1 つのメンバー プロファイルには、各フィールドの多くのプライバシー設定があります。

プライバシー設定テーブルで、fieldsSectionName に display_name があり、connectionLevel が true であるメンバーのみを検索するクエリは何でしょうか。

私はこのようなことを試みています

def query="mydisplayname"
def searchResults = Member.search(query + "*" + "  +(fieldSectionName:${'display_name'} AND connectionLevel:${true})", params)
4

2 に答える 2

0

grail はわかりませんが、Lucene では、ブールクエリの句の最大数はデフォルトで 1024 です。

この制限を増やすことができます。

ただし、パフォーマンスが低下します。または、ドキュメントの値にインデックスを付けて検索することもできます (lucene は同じ名前の異なるフィールドに対して OR 演算を実行します)。

BooleanQuery クラスの静的プロパティを使用して制限を変更できます。

 BooleanQuery.MaxClauseCount = 99999;

オムリ

于 2013-03-12T12:12:25.780 に答える