簡體   English   中英

@SearchableComponent和前綴

[英]@SearchableComponent and prefix

我正在閱讀有關Compass的文檔(舊版代碼),但我不理解@SearchableComponent和prefix屬性。 有人可以嘗試用自己的語言解釋而不參考文檔的含義以及如何使用它們嗎?

這個問題已有3年歷史了,但希望有人會偶然發現這個問題並獲得一些價值。

您可以選擇指定的前綴將構成字段存儲在其下的屬性名稱的一部分。 實際上,指南針將遍歷對象圖並為每個可索引屬性構造名稱。

如果不為@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

如您所見,最終,您的郵寄和賬單地址字段都存儲在相同的索引路徑中,即streetsuburb

現在,這可能是您想要的,也可能不是。 如果您需要區分郵寄地址和賬單地址(例如,找到郵寄和賬單地址不同的人),則可以使用前綴。 看下面的修改后的代碼,其中添加了前綴:

@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

這樣,您可以搜索“郵寄”和“賬單”地址字段作為不同的條目。

總而言之,這取決於您的用例,添加前綴是否會帶來價值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM