搜索引擎支持多语言访问,并且完全兼容开源Solr API,本篇主要介绍如何使用Solr Java API开发一个简单的读写应用访问搜索引擎。

操作步骤

  1. 获取集群连接地址
    在Lindorm实例控制台,在左侧导航栏进入数据库连接页面后,查看搜索引擎页面中的私网地址。访问地址
  2. 配置客户端SDK依赖

    Lindorm搜索引擎完全兼容开源Solr协议,可直接依赖开源客户端版本,Maven配置如下:

    <dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr-solrj</artifactId>
      <version>7.7.3</version>
    </dependency>
                        
  3. 创建索引表

    可通过集群管理界面创建索引表,具体可参考:如何创建索引表

代码示例

下面给出一个简单的代码样例:创建连接,写入3行数据,再进行查询。

  • 创建连接
    /**
    //公网访问时,本地调试采用HttpSolrClient模式
    //前提:通过控制台"访问控制"添加本机IP到白名单
    String httpUrl = "http://***:8983/solr/"
    HttpSolrClient solrClient = new HttpSolrClient.Builder(httpUrl).build();
    **/
    // 内网访问建议采用CloudSolrClient模式
    String zkHost = "zk1:2181,zk2:2181,zk3:2181/solr"
    CloudSolrClient solrClient = new CloudSolrClient.Builder(Collections.singletonList(zkHost), Optional.empty()).build(); //CloudSolrClient是线程安全的,应用多线程可以共享一个对象
  • 写入数据
    // 构造数据
    List<SolrInputDocument> docs = new ArrayList<>();
    SolrInputDocument doc = new SolrInputDocument();
    doc.addField("id", "1");
    doc.addField("name_s", "zhangsan");
    doc.addField("age_i", 18);
    docs.add(doc);
    
    doc = new SolrInputDocument();
    doc.addField("id", "2");
    doc.addField("name_s", "lisi");
    doc.addField("age_i", 20);
    docs.add(doc);
    
    doc = new SolrInputDocument();
    doc.addField("id", "3");
    doc.addField("name_s", "wangwu");
    doc.addField("age_i", 35);
    docs.add(doc);
    
    // 写入数据
    solrClient.add(docs);
  • 查询
    // 查询数据
    SolrQuery solrQuery = new SolrQuery("name_s:zhangsan");
    QueryResponse response = solrClient.query("your_index", solrQuery);
    SolrDocumentList documentList = response.getResults();
    for(SolrDocument doc : documentList){
        String id = (String)doc.getFieldValue("id");
        //do something
    }
    solrClient.close();

更多样例代码,请参见Java Demo