全文检索服务器:Solr

官网                                
    https://solr.apache.org/                            
                                
官方文档                                
    https://solr.apache.org/guide/solr/latest/deployment-guide/solrj.html                            
                                
1.介绍                                
    Solr是一个高性能,采用Java开发,基于Lucene的开源全文搜索服务器                            
    不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术。                            
    solr 需要运行在一个Servlet容器中,Solr默认提供Jetty(Java写的Servlet容器)   

    数据默认是存储在solrhome/实例名/data里面 

Solr之配置文件Solrconfig.xml和solr.xml说明 - 简书

        
                                
2.Tomcat 发布 solr                                
    基础功能使用:https://blog.csdn.net/zhidongxv/article/details/125614322                            
    如果要使用所有扩展功能,还要增加下面的步骤                            
        将solr-8.11.2\contrib  \solr-8.11.2\dist 两个文件夹拷贝到solrhome目录下                        
        将\solr-8.11.2\dist 文件夹下的所有内容拷贝到apache-tomcat-8.5.84\webapps\solr\WEB-INF\lib 目录下                        
                                
3.主要配置解释                                
    官方介绍: https://solr.apache.org/guide/8_11/solr-configuration-files.html                            
                                
4.上传文档并自定义索引字段(使用solrj)                                
    pom.xml引入依赖                            
                                
           org.apache.solr                        
           solr-solrj                        
           8.11.0                        
        
                        
                                
    测试代码        

package com.example.demo.controller;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.util.NamedList;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class SolrTest {

    public static void main(String [] args) throws IOException, SolrServerException {
        // 上传文件,且自定义索引字段
        SolrClient client = new HttpSolrClient.Builder("http://192.168.159.129:8080/solr/file_core").build();
        ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");
        req.addFile(new File("C:\\Users\\wx\\Desktop\\solr.xlsx"),"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        req.setParam("literal.id", "55");
        /**
         * 不设置下面两个注释的参数的话,需要在solrhome的managed-schema文件中加上:
         * 
         *  修改solrhome的配置文件后记得重启tomcat
         *  设置了下面两个参数的话,则在检索时,字段名称就要加个attr_前缀
         *  如果需要动态设置检索字段,推荐使用这种方法,但是要注意,solrhome的managed-schema配置文件里有很多默认的字段,不需要的可以删除
          */
        req.setParam("literal.addfiled", "新增字段");
        //req.setParam("uprefix", "attr_");
        // req.setParam("fmap.content", "attr_content");
        req.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
        NamedList result = client.request(req);
        System.out.println("Result: " + result);

        // 根据自定义索引字段检索文件
        SolrClient client1 = new HttpSolrClient.Builder("http://192.168.159.129:8080/solr").build();
        final Map queryParamMap = new HashMap();
        queryParamMap.put("q", "addfiled:新增字段");
        // queryParamMap.put("q", "attr_addfiled:新增字段");
        MapSolrParams queryParams = new MapSolrParams(queryParamMap);
        final QueryResponse response = client1.query("file_core", queryParams);
        final SolrDocumentList documents = response.getResults();
        System.out.println("Found " + documents.getNumFound() + " documents");

        // 上传普通文档
        final SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id","22222");
        doc.addField("name", "Amazon Kindle Paperwhite");
        final UpdateResponse updateResponse = client.add("new_core", doc);
        client.commit("new_core");
    }
}

                    
 

你可能感兴趣的:(solr,solr,全文检索,服务器)