Java Solr 开发入门

简介

Solr 是一个开源的全文搜索平台,基于 Apache Lucene 构建而成。它提供了强大的搜索、索引和分析功能,广泛应用于各种大规模数据的搜索引擎、电子商务网站和大数据分析等领域。本文将介绍如何使用 Java 开发 Solr 应用程序。

环境搭建

在开始之前,我们需要先搭建好 Solr 的开发环境。首先,从 Solr 官方网站( Solr 的安装目录,使用以下命令启动 Solr 服务器:

cd solr-8.9.0
bin/solr start

打开浏览器,访问 http://localhost:8983/solr/ ,如果能够看到 Solr 的管理界面,则说明环境搭建成功。

创建 Solr Core

Solr 使用 Core 来组织和管理索引数据。一个 Core 对应一个独立的索引库,每个 Core 都有自己的配置和 Schema。在 Solr 中,我们可以通过以下命令创建一个新的 Core:

bin/solr create_core -c mycore

上述命令将创建一个名为 "mycore" 的 Core。接下来,我们需要定义一个 Schema 来指定索引的字段和类型。在 Solr 的管理界面中,点击 "mycore" 标签页,然后选择 "Schema",在文本框中输入以下内容:

<schema name="example" version="1.6">
  <fields>
    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
    <field name="title" type="text_general" indexed="true" stored="true" />
    <field name="content" type="text_general" indexed="true" stored="false" />
  </fields>
  <uniqueKey>id</uniqueKey>
</schema>

点击 "Submit" 按钮保存 Schema 的配置。

Java 开发 Solr 应用程序

在开始编写 Java 代码之前,我们需要添加 SolrJ 依赖。在 Maven 项目中,可以在 pom.xml 文件中添加以下依赖:

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

索引数据

首先,我们需要创建一个 SolrClient 对象来与 Solr 服务器进行通信。然后,我们可以使用 SolrInputDocument 对象来表示一个文档,并将其添加到索引中。以下是示例代码:

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.SolrInputDocument;

public class SolrIndexer {

    public static void main(String[] args) throws Exception {
        String solrUrl = "http://localhost:8983/solr/mycore";
        SolrClient solr = new HttpSolrClient.Builder(solrUrl).build();

        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", "1");
        doc.addField("title", "Apache Solr");
        doc.addField("content", "Apache Solr is a popular search platform.");

        solr.add(doc);
        solr.commit();
        
        solr.close();
    }
}

以上代码通过创建一个 SolrClient 对象连接到 Solr 服务器,并创建一个 SolrInputDocument 对象表示一个文档。然后,将文档添加到索引中,并通过 commit() 方法提交更改。

搜索数据

要搜索数据,我们需要构建一个 SolrQuery 对象,并使用 SolrClient 的 query() 方法执行查询。以下是示例代码:

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;

public class SolrSearcher {

    public static void main(String[] args) throws Exception {
        String solrUrl = "http://localhost:8983/solr/mycore";
        Solr