小工具知识网

当前位置: 首页 > 行业知识 > linux搭建solr,使用java进行索引增删改查

行业知识

linux搭建solr,使用java进行索引增删改查

2026-10-25 12:49:43 来源:互联网转载

在linux系统上搭建solr,并且使用ik分词,添加数据导入,使用java代码实现增删改查相关功能。

()

1.solr下载

下载solr的tar包:https://archive.apache.org/dist/lucene/solr,根据所需下载具体的版本呢

下载IK分词jar包:GitHub - magese/ik-analyzer-solr: ik-analyzer for solr 7.x-8.x,下载jar包

()

2.解压安装

创建solr安装目录

mkdir -p /usr/local/solr

解压 solr包

tar -zxf solr-8.2.0.tgz -C /usr/local/solr

进入安装solr的目录

cd /usr/local/solr/solr-8.2.0

solr启动或者停止

bin/solr startbin/solr start -forcebin/solr stop -all

创建实例

bin/solr create -c test -force

3.安装ik分词器

将 ik-analyzer-8.5.0.jar复制到/usr/local/solr/solr-8.2.0/server/solr-webapp/webapp/WEB-INF/lib

实例配置

进入/usr/local/solr/solr-8.2.0/server/solr/test/conf

vi managed-schema

最文件末尾添加一下信息

                                

4.数据导入

进入/usr/local/solr/solr-8.2.0/server/solr/test/conf

vi managed-schema

 文件113行

下添加相关字

 

进入/usr/local/solr/solr-8.2.0/server/solr/test/conf/solrconfig.xml

87行添加:

 

文件最后添加

                    data-config.xml            

在/usr/local/solr/solr-8.2.0/server/solr/test/conf创建data-config.xml文件

              

导入mysql数据库数据先关包

复制包到/usr/local/solr/solr-8.2.0/server/solr-webapp/webapp/WEB-INF/lib

ik-analyzer-8.5.0,前边下载的

mysql-connector-java-5.1.32,自行下载

/usr/local/solr/solr-8.2.0/dist/solr-dataimporthandler-8.2.0

/usr/local/solr/solr-8.2.0/dist/solr-dataimporthandler-extras-8.2.0

5.添加访问账号和密码

目录/usr/local/solr/solr-8.2.0/server/etc添加verify.properties账号密码文件,格式如下

#用户名 密码 权限

user:pass,admin

修改/usr/local/solr/solr-8.2.0/server/contexts/solr-jetty-context.xml文件,在configure中添加如下配置

                                                              verify—name                        /etc/verify.properties                                        

 修改/usr/local/solr/solr-8.2.0/server/solr-webapp/webapp/WEB-INF/web.xml文件,在security-constraint后追加如下配置

          Solr      /                          admin                              BASIC            verify-name       

6.重启项目

启用和停用命令:在/usr/local/solr/solr-8.2.0目录中执行

强制启动:bin/solr start -force

强制停止:bin/solr stop -all

7.java使用solrj包进行增删改查

仓库坐标

    org.apache.solr    solr-solrj    8.2.0

测试用例如下

public class SolrUtil {        protected static Logger logger = LogManager.getLogger(SolrUtil.class);    public static void main(String[] args) {             //queryQuestionByContentFromSolr();        //addQuestionToSolr();        //deleteDocumentById();    }        /**     * 新增试题索引     */    public static void addQuestionToSolr(){        try {            HttpSolrClient.Builder builer = new HttpSolrClient                    .Builder("http://192.168.0.222:8983/solr")                    .withConnectionTimeout(10000)                    .withSocketTimeout(60000);            SolrClient client = builer.build();                        SolrInputDocument inputDocument = new SolrInputDocument();            inputDocument.addField("id", "77777");            inputDocument.addField("QUESTION_ID", "77777");            inputDocument.addField("QUESTION_STEM", "角色名称7777788888");                        UpdateRequest updateRequest = new UpdateRequest();            updateRequest.setBasicAuthCredentials("name","123456");            updateRequest.add(inputDocument);            UpdateResponse commit = updateRequest.commit(client, "test");            System.out.println(commit.getStatus());            System.out.println(commit.getResponse());            System.out.println("结束!");           } catch (SolrServerException e) {               e.printStackTrace();           } catch (IOException e) {               e.printStackTrace();           }    }        /**     * 删除试题     */    public static void deleteDocumentById(){        try {            HttpSolrClient.Builder builer = new HttpSolrClient                    .Builder("http://192.168.0.222:8983/solr")                    .withConnectionTimeout(10000)                    .withSocketTimeout(60000);               SolrClient client = builer.build();           /*    SolrInputDocument inputDocument = new SolrInputDocument();            inputDocument.addField("id", "77777");            inputDocument.addField("QUESTION_ID", "77777");            inputDocument.addField("QUESTION_STEM", "角色名称7777788888");*/            /*client.add(inputDocument);            client.commit();*/                                    UpdateRequest updateRequest = new UpdateRequest();            updateRequest.setBasicAuthCredentials("name","123456");            String query = "id:77777";            updateRequest.deleteByQuery(query);            //UpdateResponse process = updateRequest.process(client, "test");            updateRequest.commit(client, "test");            System.out.println("结束!");       } catch (SolrServerException e) {               e.printStackTrace();       } catch (IOException e) {               e.printStackTrace();       }    }        /**     * 条件查询试题类     */    public static void queryQuestionByContentFromSolr() {        try {            String sqStr = "角色名称77777888889";               ModifiableSolrParams params = new ModifiableSolrParams();                 params.set(HttpClientUtil.PROP_BASIC_AUTH_USER, "name");                 params.set(HttpClientUtil.PROP_BASIC_AUTH_PASS, "123456");                 CloseableHttpClient closeableHttpClient = HttpClientUtil.createClient(params);               HttpSolrClient.Builder builer = new HttpSolrClient.Builder("http://192.168.0.222:8983/solr/test/").withHttpClient(closeableHttpClient);               SolrClient client = builer.build();               SolrQuery sq = new SolrQuery();               sq.set("q", "QUESTION_STEM:"+sqStr);               //sq.addFilterQuery("GRADE:"+null);               //sq.addFilterQuery("COURSE:0005");               //sq.setRows(5);                              QueryResponse response = client.query(sq);               SolrDocumentList list = response.getResults();               for (SolrDocument solrDocument : list) {                    String QUESTION_ID = (String) solrDocument.getFirstValue("QUESTION_ID");                    String QUESTION_STEM = (String) solrDocument.getFirstValue("QUESTION_STEM");                    //String GRADE = (String) solrDocument.getFirstValue("GRADE");                    //String COURSE = (String) solrDocument.getFirstValue("COURSE");                    //System.out.println("GRADE:"+GRADE+"-COURSE:"+COURSE+"-QUESTION:"+QUESTION_ID + "-" + QUESTION_STEM);                    System.out.println("QUESTION:"+QUESTION_ID + "-" + QUESTION_STEM);               }                client.close();               System.out.println("结束!");           } catch (SolrServerException e) {               e.printStackTrace();           } catch (IOException e) {               e.printStackTrace();           }    }}

参考:

solr 安装和使用_solr安装-CSDN博客

手把手教你 对 solr8 配置用户登录验证_solrj 8 认证-CSDN博客


手把手教你 对 solr8 配置用户登录验证_solrj 8 认证-CSDN博客
 

solr_使用中遇到的问题(内存不足)_solr内存不足-CSDN博客 

上一篇:公网ip服务器怎么搭建的?

下一篇:电脑Win10系统重装教程及注意事项全解析