【问题标题】:Creating Solr schema based on a class using SolrJ使用 SolrJ 基于类创建 Solr 模式
【发布时间】:2017-11-15 11:18:53
【问题描述】:

在应用程序启动时,我想检查架构是否存在并且: 1) 如果没有 -> 从包含字段的 Java 类创建模式 2)如果上述类不同->更新架构 3) 如果架构与 Java 类中的字段 1:1 映射,则什么也不做

我已将我的任务分为 3 个子任务,我的第一个任务是从现有 Java 类创建一个模式。

这是我的课程(省略了 getter 和 setter):

public class Order {
private String name;
private String phone;
private Address address;

private List<Amenities> amenities;
private BigDecimal distance;
private String image;
private List<Attributes> attributes;
private List<String> networks;
private OrderType orderType;
private Service service;
}

如您所见,它有很多字段类型,也应该用于创建模式(递归?)。甚至可以创建这样的架构吗?

【问题讨论】:

    标签: solr solrj


    【解决方案1】:

    做起来应该很简单:

    首先,您需要列出类的所有字段,可以通过reflection 实现。之后,您应该使用Schema API,这将允许您对架构的字段进行CRUD操作。

    /schema/fields 将允许您获取所有字段,然后您可以使用replace-field 更新字段,delete-field 删除字段,add-field 用于添加字段。如需更多信息,请查看此documentation

    警告:从 Solr 5.3 开始添加了 Schema API

    【讨论】:

    • 请注意,对于任何引用的扩展对象(例如,他的示例中的 AmenitiesServiceOrderTypeAttributes 对象),作为父/子,这将很难解决Solr 中的关系在查询(尤其是在普通查询之外)和索引时需要非常小心(而且不止一个级别使得大多数功能更难正确处理)。
    • @MatsLindh,当然。我不知何故认为这有点超出了这个问题的范围
    • 感谢您的回答 - 如果您有时间,请添加另一个关于 SolrJ 的问题stackoverflow.com/questions/47308076/…
    • @Mysterion 当然,只是对 OP 的警告。
    猜你喜欢
    • 2018-04-28
    • 2018-08-02
    • 2012-05-02
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    相关资源
    最近更新 更多