如何使用 SolrJ 从 Core 中检索所有存储的字段

Pet*_*ter 2 solrj

是否可以使用 SolrJ 客户端从某个 Core 中检索所有存储的字段?

例如 <field name="author" type="string" stored="true" indexed="true"/>

谢谢,彼得

Shi*_* SS 5

您可以使用特定核心的 SolrJ 客户端获取有关字段的信息。

使用以下代码片段进行检索。

    import java.util.ArrayList;

    import org.apache.solr.client.solrj.SolrQuery;
    import org.apache.solr.client.solrj.SolrServer;
    import org.apache.solr.client.solrj.SolrServerException;
    import org.apache.solr.client.solrj.impl.HttpSolrServer;
    import org.apache.solr.client.solrj.response.QueryResponse;
    import org.apache.solr.common.params.CommonParams;
    import org.apache.solr.common.util.NamedList;
    import org.apache.solr.common.util.SimpleOrderedMap;



    SolrServer solrCore = new HttpSolrServer("http://{host:port}/solr/core-name");
    SolrQuery query = new SolrQuery();
    query.add(CommonParams.QT, "/schema/fields");
    QueryResponse response = solrCore.query(query);
    NamedList responseHeader = response.getResponseHeader();
    ArrayList<SimpleOrderedMap> fields = (ArrayList<SimpleOrderedMap>) response.getResponse().get("fields");
    for (SimpleOrderedMap field : fields) {
        Object fieldName = field.get("name");
        Object fieldType = field.get("type");
        Object isIndexed = field.get("indexed");
        Object isStored = field.get("stored");
        // you can use other attributes here.

        System.out.println(field.toString());
    }
Run Code Online (Sandbox Code Playgroud)

请注意我使用的是 4.10.2 版本的 SolrJ。

谢谢,

湿婆库马尔 SS