繁体   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