【问题标题】:Yokozuna solr schema file enum supportYokozuna solr 模式文件枚举支持
【发布时间】:2015-08-15 01:58:48
【问题描述】:

在我们的 solr 模式文件中,我们定义了枚举字段类型并在 enumConfig 参数中指定了一个外部 enums.xml 文件。

但是,我们必须手动将该文件复制到我们正在创建或更新的搜索索引的 /conf 目录中。

有没有办法使用 riak java 客户端以编程方式完成它? API 中的 Yokozuna 索引类似乎不支持外部文件加载,因此它抱怨在路径中找不到 enums.xml 文件。我们希望能够以编程方式更新架构并指向 enums.xml 文件,以便我们可以更新搜索索引,而无需手动将 enums.xml 文件复制到 /conf 目录。

【问题讨论】:

    标签: solr riak yokozuna


    【解决方案1】:

    API 中目前没有可通过 Java 客户端访问的功能,可让您上传诸如 enums.xml 之类的外部文件。现在,您必须手动将文件复制到集群中的每个节点。

    【讨论】:

    • 谢谢克雷格。知道何时添加此功能吗?
    • Tarun,我不知道是否或何时会添加该功能。代码库位于 Github 上的 github.com/basho/yokozuna。如果这是您感兴趣的功能,您当然可以提交问题。如果您有兴趣添加功能,也可以提交拉取请求。
    【解决方案2】:

    这将在您的 Riak 集群上创建一个模式(及其 XML 文件):

    import com.basho.riak.client.api.RiakClient;
    import com.basho.riak.client.api.commands.search.*;
    import com.basho.riak.client.core.query.search.YokozunaIndex;
    import com.basho.riak.client.core.query.search.YokozunaSchema;
    
    String schemaName = "enum";
    
    RiakClient client = RiakClient.newClient("127.0.0.1");
    
    String schemaStr = ...; // read from local enum.xml
    
    YokozunaSchema schemaObj = new YokozunaSchema(schemaName, schemaStr);
    StoreSchema storeSchema = new StoreSchema.Builder(schemaObj).build();
    client.execute(storeSchema);
    

    然后您可以根据该架构创建索引:

    String indexName = "enum_idx";
    
    YokozunaIndex indexObj = new YokozunaIndex(indexName, schemaName);
    StoreIndex storeIndex = new StoreIndex.Builder(indexObj).build();
    client.execute(storeIndex);
    

    用于 Java 2.x 的 Riak 客户端

    【讨论】:

    • 我相信我不需要为 enums.xml 文件创建索引,因为它仅通过主 solr 模式引用。但是,如果我只是按照您的回答中所述存储它,它会被复制到 /conf 目录吗?
    • 对不起,我误解了你的问题。此代码用于上传完整的架构,而不是 enumsConfig。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2016-10-26
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多