最近因项目需要一个全文搜索引擎服务, 在考察了Lucene及Solr后,我们选择了Solr. 本文简要记录了基于Solr搭建一个企业搜索服务器的过程.网上的资料太多千篇一律,也可能版本不同,总之在参照的时候并不顺利,因此在通过官网的介绍并逐步实践的基础上,我们整理了这个文档,希望能帮助到有类似需求的大家.

  1. Solr 介绍

    1. Solr 是一个基于Lucene技术的企业级搜索应用服务器, 运行在JVM环境中, 对外以类似webservice http模式提供接口.可简单的通过配置的形式实现一个企业级的搜索服务.
  2. 安装与部署
    1. JDK环境配置
      安装配置jdk, 并设置 JAVA_HOME 环境变量,
      ps: 楼主最开始使用的是1.8的版本, 也挺正常, 但后面因为在尝试导入sqlserver 2014数据库数据的时候,可能是楼主下载的mssql-jdbc.jar 包比较新的原因, 总是出现类似版本过低的提示, 便直接升级到了最新的jdk11版本.
    2. 下载Solr包及配置运行环境
      1. 去Solr官网下载程序包 ,楼主下载了最新的7.5版本 http://www.apache.org/dyn/closer.lua/lucene/solr/7.5.0
      2. Solr 本身内置了Severlet, 故可直接运行, 当然如果不习惯,也可以将其挂在类似 tomcat 等其他Serverlet 容器下运行.
      3. 将下载的Solr 包解压到合适位置后, 在其bin路径下, 执行 solr start后, 如出现下面的提示则表示环境正常了.

        此时便可通过浏览器访问 http://localhost:8983, 一切正常的话便可预见类似下面的管理中心界面

        若出现错误, 通常可能为jdk环境没有配置正常,可通过提示对应处理.
      4. 创建索引库 Core
        1. 在 server\solr 目录下,新建文件夹,本文以创建一个用于搜索物料产品的索引库为例. 姑且取名为 icvip 为例, 并默认配置[ server\solr\configsets\_default\conf ] 复制到此路径下.
        2. 在管理中心界面中,选择左侧的 Core Admin 菜单,创建一个新的 Core. 本处将name设置为icvip,instanceDir 设置为icvip, 注意下面的提示:instanceDir 和 DataDir 一定要在此步骤之前存在,这也是我们为何要在界面创建之前先做第一步的原因.参考截图如下
      5. 正常添加后, 我们便可以对这个索引库做操作了,如导入数据,分词器,上传文档,查询测试....参见如下截图中的左边菜单
  3. 中文分词器ik-analyzer
    为了更好的支持中文分词,我们此处引入ik分词器.

    1. 可通过maven仓库下载最新的ik分词器的jar包. https://search.maven.org/search?q=com.github.magese, 并将其放在server\solr-webapp\webapp\WEB-INF\lib 目录下.
    2. 修改server\solr\icvip\conf\managed-schema配置,添加一个fieldType启用ik分词器.
<fieldType name="text_ik" class="solr.TextField"><analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

    1. 重启Solr服务,并尝试在 Analysis 中选择 text_ik 测试是否生效,如下所示
  1. 从数据库导入数据源
    1. 有了以上的配置后, 我们的搜索库已经准备好了,接下来就该往其添加索引数据了.当然你可以添加其支持的各种数据格式, 如documents菜单下的Document Type所列.本处介绍另外一种形式的数据源,即直接从数据库导入数据.在正式导入之前,我们先简单介绍一下导入数据的内容,本文以一个物料及其规格参数列表为例, 其关系为 1物料:n规格参数 , 数据量大概为 物料表 638 万条, 参数规格表 9255万条, 数据库文件约为15G左右.
    2. 前文已说, Solr 是基于java平台下的产物, 需要下载对应的驱动来支持数据库连接,其中 sqlserver 可通过 https://docs.microsoft.com/zh-cn/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017 下载对应的jar包,mysql 对应下载地址为 https://www.mysql.com/products/connector/ .
    3. 在Core目录下,新建 lib 文件夹,将solr-dataimporthandler 和 数据库连接驱动 jar包拷贝到此目录.
       
    4. 添加Dataimport 支持, server\solr\icvip\conf\solrconfig.xml 添加 requestHandler , 注意如果有其他的 name=”/dataimport” 节点,请将其移除.,其中的 <str name=”config”>节点即为导入数据源的配置文件
      <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst></requestHandler>

    5. 在当前目录下新建 data-config.xml文件, 如下所示
      <?xml version="1.0" encoding="UTF-8"?>
      <dataConfig>  <!--mysql数据源--><!--<dataSource type="JdbcDataSource"   driver="com.mysql.jdbc.Driver"   url="jdbc:mysql://localhost:3306/icvip_material?characterEncoding=utf8&amp;useSSL=false"   user="root"   password="123456"/>  --><!--sqlserver 数据源-->              <dataSource type="JdbcDataSource"   driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost:1433;DatabaseName=icvip_material"   user="sa"   password="123456"/> <document name="Products"><!--产品实体--><entity name="Product" dataSource="dataSource" pk="ProductId"query="SELECT * FROM Product"> <field column="ProductId" name="ProductId" /><field column="CategoryId" name="CategoryId" /><field column="PN" name="PN" /><field column="Brand" name="Brand" /><field column="Describe" name="Describe" /><field column="ImageBigUrl" name="ImageBigUrl" /><field column="ImageSmallUrl" name="ImageSmallUrl" /><field column="DataSheetURL" name="DataSheetURL" /><field column="Series" name="Series" /><field column="ProductFamily" name="ProductFamily" /><field column="CategoryName" name="CategoryName" /><field column="PageUrl" name="PageUrl" />    <!--产品规格实体,关系为1产品:n产品规格--><entity name="Product_Spec"  pk="SpecificationsId"query="SELECT [Key],[Value] FROM specifications WHERE ProductId='${Product.ProductId}'"> <field column="Key" name="ProSpecKey" /> <field column="Value" name="ProSpecValue" /> </entity></entity></document>
      </dataConfig>

    6. 配置server\solr\icvip\conf\managed-schema,以确认使用的分词规则

      至于配置的含义,可参考https://wiki.apache.org/solr/DataImportHandler
    7. 导入数据,切换到Dataimport 菜单, 选中实体导入. 接下来就是漫长的等待过程....
  2. 常用查询参数介绍, 重点需要关注 q/ fq/ hl/start/rows 几个参数. 可使用Query菜单进行测试.

后记: 经过以上步骤后,我们的Solr应用就基本结束. 不过因Solr作为一个企业级的搜索产品,功能原不止于此,文中并没有涵盖完全Solr的操作, 如关于增量索引设置问题,各位如果有需要可以在此基础上继续深入研究,附上Solr官网介绍的详细地址.https://wiki.apache.org/solr/

转载于:https://www.cnblogs.com/xie-zhonglai/p/solr.html

使用 Solr 构建企业级搜索服务器相关推荐

  1. 使用Solr构建企业级的全文检索(三)---------Schema定义

    上一篇文章介绍了Solr的管理界面,使用这个管理界面我们我们可以方便的了解现在Solr的运行情况,也可以查看目前的系统是如何配置的,你甚至可以通过它做一些测试和调试,但是也仅止于此,系统的配置你还必须 ...

  2. 常见企业级搜索服务器

    Lucene : https://lucene.apache.org/ Solr : http://lucene.apache.org/solr/resources.html Elasticsearc ...

  3. Solr 搭建搜索服务器

    2019独角兽企业重金招聘Python工程师标准>>> 一.安装配置 所需JDK和Tomcat和安装包solr-4.2.1.tgz Tomcat安装目录 /usr/local/tom ...

  4. 使用Elasticsearch 构建 .NET 企业级搜索

    最近几年出现的云计算为组织和用户带来了福音.组织对客户的了解达到前所未有的透彻,并能够采用个性化通信锁定客户.用户几乎可以随时随地获取其数据,使其更加易于访问和使用.为了存储所有这些数据,大型数据中心 ...

  5. Solr 企业级搜索应用服务器学习

    转自:https://blog.csdn.net/cs_hnu_scw/article/details/79388080 备注:学习Solr最好先了解一下Lucene的基本内容,不需要很熟,但是知道个 ...

  6. 企业级搜索solr应用

    一 .solr简介 solr是以lucene为内核开发的企业级搜索应用  应用程序可以通过http请求方式来提交索引,查询索引,提供了比lucene更丰富的查询语言,是 一个高性能,高可用环境全文搜索 ...

  7. FJ集团企业级邮件服务器构建方案

    FJ集团企业级邮件服务器构建方案 方案一: 购企业级邮箱,如下图所示: 1) 中资源老板邮局 另见<中资源网络服务有限公司> 2) 万网 网址:http://www.net.cn/stat ...

  8. solr 5.3.1 使用java_Apache Solr 5.3.1 发布下载,Java 全文搜索服务器

    Apache Solr 5.3.1 发布下载,主要更新内容如下: Bug 修复  (10)SOLR-7949: Resolve XSS issue in Admin UI stats page (Da ...

  9. 内网solr全文搜索服务器,快解析一步映射让外网访问

    Solr,指apache solr,其全称为Search On Lucene Replication.Solr,是一个高性能,采用java开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提 ...

  10. java全文搜索服务器 solr_Apache Solr采用Java开发、基于Lucene的全文搜索服务器

    http://docs.spring.io/spring-data/solr/ 首先介绍一下solr: Apache Solr (读音: SOLer) 是一个开源.高性能.采用Java开发.基于Luc ...

最新文章

  1. V神建议使用BCH区块链用于以太坊“数据层”
  2. 基于Android 虹软人脸、人证对比,活体检测
  3. Iphone屏幕旋转
  4. 非双一流普通院校毕业,你凭什么斩获 BAT 的 Offer?
  5. CCF201403-4 无线网络(100分)
  6. 智能优化算法应用:基于GWO优化的最小交叉熵图像多阈值分割 - 附代码
  7. ubuntu 14.04 android jdk,Ubuntu 14.04 安裝 jdk8u20 並配置環境變量 安裝Android Studio
  8. 计算机网络同传步骤,HP网络同传使用方法Word版
  9. java编辑双层pdf文件,双层PDF制作系统
  10. 高大上的cmd命令行来袭!颜值与内涵兼备
  11. Could not set the project description for 'hotelseqbid.ws' because the project d
  12. Win11系统pin码忘记了怎么办?Win11忘记pin码解决方法
  13. Golang内存分配逃逸分析
  14. 【NOIP模拟赛】【数学真奇妙系列】纸盒子
  15. 30 个 Python 的最佳实践、小贴士和技巧
  16. lisp画垫圈_基于DCL和AutoLISP语言开发的垫圈标准件库
  17. 计算机名称起什么好?,电脑取名
  18. 【微信测试版】支持安卓平板和手机同时登录
  19. picpick尺子像素大小精度不够准确_光栅尺精度与分辨率有什么关系吗?
  20. 深度报道 | 从地库创业到获国家队融资,驭势科技的无人驾驶野心

热门文章

  1. Swagger 3.0 官方 starter 诞生,野生的可以扔了!
  2. 牛皮啊!竟然可以为Dubbo接口生成文档了!
  3. 手把手教你用Python实现人脸识别,辨别真假!
  4. 恒丰银行微服务架构优化实践
  5. 为什么有那么多人选择Python,真的有那么好吗?
  6. 正在考虑微服务架构的松耦合?小心这些陷阱
  7. GitHub疯传!北大学霸的LeetCode刷题笔记火了
  8. python进度条代码怎么写_Python实现控制台中的进度条功能代码
  9. Mysql——应用学习之旅
  10. Ubuntu中root用户和user用户的相互切换(转)