首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@SearchableComponent和prefix

@SearchableComponent和prefix
EN

Stack Overflow用户
提问于 2012-09-17 16:24:21
回答 1查看 79关注 0票数 1

我正在阅读有关Compass (遗留代码)的文档,但我不理解@SearchableComponent和前缀属性。有没有人可以尝试用自己的语言来解释,而不是参考文档,它们是什么意思,以及您应该如何使用它们?

EN

回答 1

Stack Overflow用户

发布于 2015-06-16 19:11:06

3年前的问题,但希望有人会偶然发现并获得一些价值。

您可以选择指定的前缀将构成存储字段的属性名称的一部分。Compass实质上将遍历对象图,并为每个可索引属性构造名称。

在不为@SearchableComponent指定前缀的情况下,您可能会得到如下内容:

代码语言:javascript
复制
@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

现在,这可能是你想要的,也可能不是。如果您需要区分邮寄地址和帐单地址(例如,查找具有不同邮寄地址和帐单地址的人员),您可以使用前缀。看看下面修改过的代码,其中添加了前缀:

代码语言:javascript
复制
@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

通过这种方式,您可以搜索邮件和帐单地址字段作为不同的条目。

总而言之,这取决于您的用例,即添加前缀是否会提供价值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12455522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档