1

Compass (レガシー コード) に関するドキュメントを読んでいますが、@SearchableComponent と prefix 属性がわかりません。ドキュメンテーションを参照せずに、誰かが自分の言葉で説明しようとすることはできますか?

4

1 に答える 1

0

3 年前の質問ですが、うまくいけば、誰かがこれにつまずいて何らかの価値を得るでしょう。

オプションで指定できるプレフィックスは、フィールドが格納されるプロパティ名の一部を形成します。Compass は基本的に、オブジェクト グラフを走査し、インデックス可能な各プロパティの名前を作成します。

の接頭辞を指定しないと@SearchableComponent、次のようになります。

@Searchable(root=true)
class Customer {
    @SearchableProperty(name="name")
    String name;

    @SearchableComponent
    Address billingAddress;

    @SearchableComponent
    Address mailingAddress;
}

@Searchable(root=false)
class Address {
    @SearchableProperty(name="street")
    String street;

    @SearchableProperty(name="suburb")
    String suburb;
}

これにより、次の 3 つのインデックス フィールドが作成されます。

  • name
  • street
  • suburb

ご覧のとおり、郵送先住所フィールドと請求先住所フィールドの両方が同じインデックス パスstreet&に格納されますsuburb

さて、これはあなたが望むものかもしれませんし、そうでないかもしれません。郵送先住所と請求先住所を区別する必要がある場合 (たとえば、郵送先住所と請求先住所が異なる人を検索する場合)、プレフィックスを使用できます。プレフィックスを追加する次の修正されたコードを見てください。

@Searchable(root=true)
class Customer {
    @SearchableProperty(name="name")
    String name;

    @SearchableComponent(prefix="billing_")
    Address billingAddress;

    @SearchableComponent(prefix="mailing_")
    Address mailingAddress;
}

@Searchable(root=false)
class Address {
    @SearchableProperty(name="street")
    String street;

    @SearchableProperty(name="suburb")
    String suburb;
}

これにより、次のような検索キーが得られます。

  • name
  • billing_street
  • billing_suburb
  • mailing_street
  • mailing_suburb

このようにして、郵送先住所フィールドと請求先住所フィールドを個別のエントリとして検索できます。

全体として、プレフィックスを追加することで価値が得られるかどうかは、ユースケースによって異なります。

于 2015-06-16T11:11:06.480 に答える