您的位置 首页 java

5分钟搭建一个搜索引擎,Apache Solr彻底掌握

最近因业务中需要对数据库里面的数据进行多维度检索,完全依赖SQL已经无法满足业务的需求了,显然我们需要搜索技术的支持。这玩意也没啥可技术调研的,基本上就如下几种方案:

  1. 自己搭建搜索引擎,采用ElasticSearch
  2. 自己搭建搜索引擎,采用 solr
  3. 使用 云服务 ,使用 阿里云 的开放搜索产品或者ES产品

业务场景:

  • 不需要数据实时同步
  • 数据量小、访问频次低,因此单机即可
  • 能提供各个字段的多维度模糊查询
  • 能简单快速上手,容易维护
  • 成本低

基于以上场景,基本上就pass掉了使用云服务,因为它真的不便宜,最便宜的阿里云开放搜索或者ES产品也得1元/小时,也就是一个月720元,一年8640元,这还只是一个搜索应用,如果有多个费用会更多,所以我们还是选择自建吧。那就需要考虑到运维成本的问题了,要能简单快速上手且易于维护,所以我最终选择了solr。

solr官网:

Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene™.

Solr是基于Apache Lucene™构建的流行的、速度极快的开源企业搜索平台。

下载&解压

 //下载最新版8.4.1
wget 
//解压到solr-8.4.1
tar xzf solr-8.4.1.tgz  

解压后的 文件目录 如下:

  • bin :脚本文件
  • contrib:solr专用功能的附加插件
  • dist:依赖的jar文件
  • docs:文档
  • example:示例
  • licenses:使用到的第三方许可证书
  • server :solr核心应用程序所在目录
  • 启动solr服务

     #启动solr
    sh bin/solr start -force  

    可能会出现启动失败的情况:

     bin/solr: line 739: syntax error near unexpected token `<'
    bin/solr: line 739: `    done < <(find "$SOLR_PID_DIR" -name "solr-*.pid" -type f)'  

    这是可能端口被占用了,换一个指定端口启动:

     ./bin/solr start -p 8983 -force  

    输出日志:

    5分钟搭建一个搜索引擎,Apache Solr彻底掌握

    这样就启动成功了,访问8983的控制台(注意检查 服务器端口 8983是否开放状态):

    5分钟搭建一个搜索引擎,Apache Solr彻底掌握

    solr控制台

    这样我们的solr就安装成功了。

    配置Solr Core

    add core

    可以看到提示说创建Core之前, instanceDir dataDir 文件夹必须已经存在。那么我们就先创建好对应的文件夹,记住这个目录:solr-8.4.1/server/solr,我们会在这个目录下创建core所属的instanceDir,而dataDir则在instanceDir目录下,可以拷贝configsets/_default/conf/目录下的所有文件到新建的core下面:

     cp -r configsets/_default/conf/ test_rong_msg_history/  

    然后回到管理页面执行Create Core,创建好我们的Core:

    配置中文分词器

    因为我们需要对中文内容进行模糊查询、匹配,则需要单独配置中文分词器,下载ik-analyzer-8.3.0.jar,最好与自己的solr版本对应:

     wget   

    下载完毕后放到server/solr-webapp/webapp/WEB-INF/lib目录下,再回到我们刚刚创建的Core目录下,编辑managed-schema文件,增加如下内容:

    重启solr:

     bin/solr restart -force  

    去solr控制台测试一下中文分词,选择text_ik进行分析,可以看到IKT的分词结果:

    中文分词

    也可以自定义分词,比如我们想将“测试中文分词”中的“中文分”单独作为一个词来分词的话,那么可以如下操作:

    1.解压ik-analyzer-8.3.0.jar,执行jar -xvf ik-analyzer-8.3.0.jar得到如下文件目录:

    2.将ext.dic、stopword.dic、IKAnalyzer.cfg.xml三个文件拷贝到solr-8.4.1/server/solr-webapp/webapp/WEB-INF/classes目录下(没有classes目录mkdir一下):

    3.其中ext.dic就是我们自定义的中文词,将“中文分”加到这个文件中去,重启solr,再试试分词效果:

    自定义分词

    可以看到,“ 中文分 ”已经作为一个词被solr拆出来了。

    数据源配置DataImport

    我们使用solr的目的就是为了更方便、更多维度、更快速度的检索数据,而数据都会存储在数据库中,所以就需要我们将数据库中的数据及时的导入到solr搜索引擎中,便于业务搜索。

    依赖jar包下载到dist文件夹对应目录下:

    编辑配置文件test_rong_msg_history/conf/solrconfig.xml新增如下内容:

    在conf目录下新增data-config.xml,主要是为了配置连接mysql数据库的数据源信息:

    数据源配置好了,接下来回来solr控制台,在控制台选择我们之前添加的core,配置其schema,也可以直接编辑managed-schema文件来配置field:

    add field

    至此,配置工作完成,开始讲数据库中的数据导入到solr中来,执行Dataimport:

    全量导入

    可以看到从数据库中导入了112条记录到solr,这个时候执行Query,发现可以查询数据了:

    query

    这样我们便完成了从mysql导入数据到solr的配置工作,大家便可以根据solr的相关查询API来开发自己的业务了。

    以上就是 solr的搭建、配置中文分词、配置数据源的详细步骤说明 ,建议大家感兴趣的可以自己在本地动手搭建一下,相信大家自己搭建后,不仅初步掌握了solr搜索引擎的基础知识,还会获得更多其他的收获。

    文章来源:智云一二三科技

    文章标题:5分钟搭建一个搜索引擎,Apache Solr彻底掌握

    文章地址:https://www.zhihuclub.com/201407.shtml

    关于作者: 智云科技

    热门文章

    网站地图