2012-09-17 78 views
1

我正在閱讀有關Compass(遺留代碼)的文檔,但我不明白@SearchableComponent和prefix屬性。有人可能會試圖用自己的話來解釋,而不提及文檔的意思,以及如何使用它們?@SearchableComponent和前綴

+0

這實際上是否與地理位置有關,還是另一種指南針? – Ryan

+0

已編輯。謝謝:) – LuckyLuke

回答

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

通過這種方式,您可以搜索郵件和帳單地址字段作爲不同的條目。

總而言之,這取決於您的使用案例,以確定添加前綴是否會提供價值。