1
我正在閱讀有關Compass(遺留代碼)的文檔,但我不明白@SearchableComponent和prefix屬性。有人可能會試圖用自己的話來解釋,而不提及文檔的意思,以及如何使用它們?@SearchableComponent和前綴
我正在閱讀有關Compass(遺留代碼)的文檔,但我不明白@SearchableComponent和prefix屬性。有人可能會試圖用自己的話來解釋,而不提及文檔的意思,以及如何使用它們?@SearchableComponent和前綴
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
通過這種方式,您可以搜索郵件和帳單地址字段作爲不同的條目。
總而言之,這取決於您的使用案例,以確定添加前綴是否會提供價值。
這實際上是否與地理位置有關,還是另一種指南針? – Ryan
已編輯。謝謝:) – LuckyLuke