通过开源Solr API访问搜索引擎

本文介绍通过开源Solr API(Java)访问Lindorm搜索引擎的步骤和示例说明。

前提条件

  • 安装Java环境,使用JDK1.6或更高版本。

  • 已将本机IP添加至白名单,具体操作,请参见设置白名单

注意事项

不支持通过公网访问。

步骤一:下载solr-solrj

添加Maven依赖获取。如果您使用Maven仓库做项目,请在pom.xml文件中添加solr-solrj依赖,具体代码如下。

<dependency>
   <groupId>org.apache.solr</groupId>
   <artifactId>solr-solrj</artifactId>
   <version>8.9.0</version>
</dependency>

步骤二:创建实例并初始化

  • 如果您使用HttpSolrClient模式,请联系Lindorm技术支持(钉钉号:s0s3eg3)获取专有网络HTTP地址(httpUrl)。代码如下所示。

    String httpUrl = "http://***:****/solr/";
    HttpSolrClient solrClient = new HttpSolrClient.Builder(httpUrl).build();
  • 如果您采用CloudSolrClient模式,代码如下所示。

    String zkHost = "ld-bp16cf8611a4r****-proxy-zk.lindorm.rds.aliyuncs.com:2***/solr";
    CloudSolrClient solrClient = new CloudSolrClient.Builder(Collections.singletonList(zkHost), 
    Optional.empty()).build();
    说明
    • CloudSolrClient是线程安全的,应用多线程可以共享一个对象。

    • zkHost为Lindorm搜索引擎的Solr兼容地址,如何获取,请参见查看搜索引擎连接地址

步骤三:访问搜索引擎示例说明

  1. 通过以下代码写入数据。

    List docs = new ArrayList<>();
    SolrInputDocument doc = new SolrInputDocument();
    doc.addField("id", 1);
    doc.addField("name_s", "bob");
    doc.addField("age_i", 18);
    docs.add(doc);
    solrClient.add("your_index",docs);
  2. 通过以下代码查询数据。

    SolrQuery solrQuery = new SolrQuery("name_s:bob");
    QueryResponse response = solrClient.query("your_index", solrQuery);
    SolrDocumentList documentList = response.getResults();
    for(SolrDocument solrdoc : documentList){
        String id = (String)solrdoc.getFieldValue("id");
        //do something
    }
    solrClient.close();
    说明

    关于常见数据查询的完整示例,请参见代码示例