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