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