1.什么是solr

  solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文检索服务器。Solr提供了比lucene风味丰富的查询语言,同时实现了可配置,可扩展,并对索引,搜索性能进行优化。

  Solr可以独立运行,运行在Jetty,Tomcat等这些Servlet容器中,solr索引的实现方法很简单,用POST方法享Solr服务器发送一个藐视Field及其内容的XML文档,Solr根据XML文档添加,删除,更新索引。Solr搜索只需要发送HTTP GET请求,然后对Solr返回XML,json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能。Solr提供了一个管理界面,通过管理界面可以查询solr的配置和运行情况。

2.Solr与Lucene的区别

  Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎。Lucene提供了完整的查询引擎和索引引擎,目的是为了软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索引擎。

  Solr的目标是打造一款企业级的搜索引擎系统,他是一个搜索引擎服务,可以独立运行,通过solr可以非常快速的构建企业的搜索引擎,通过solr也可以搞笑的完成站内搜索功能。

Solr原理图

3. Solr安装及配置

3.1 官网下载:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr

3.2 solr4.10.3的目录结构

bin:solr的运行脚本

contrib:solr的一些贡献软件/插件,用于增强solr的功能

dist:该目录包含build过程汇总产生的war和jar文件,以及相关的依赖文件。

docs:solr的API文档

example:solr工程的例子目录:

  example/solr:

  该目录三十一个包含默认配置信息的solr的core目录

  example/muticore:

  该目录包含了在solr的multicore中设置的多个Core目录

  example/webapps:

  该目录中包括了一个solr.war,该war可作为solr的运行实例工程。

licenses:solr相关的一些许可信息

3.3.solr运行环境

solr需要运行在一个Servlet容器中,Solr4.10.3要求jdk使用1.7以上;solr默认提供jetty(java写的Servlet容器),在这使用tomcat作为servlet容器。

Solr整合tomcat

第一步:先将\solr\solr-4.10.3\example\webapps下的solr.war 复制粘贴到tomcat的webapps下,并解压删除。

第二步:再将solr-4.10.3\example\lib\ext文件夹下的所有jar包copy到第一步解压好的solr\WEB-INF\lib下

第三步:创建一个solrhome文件夹,将\solr-4.10.3\example\solr下的所有文件全部copy到solrhome文件夹下

第四步:修改tomcat中webapps下的webapps\solr\WEB-INF\web.xml

第五步:启动tomcat

效果:

4. schema.xml配置文件

在solrhome中的collection1的配置文件中有一个schema.xml文件,这是对域进行配置的xml文件。之前使用Lucene是new出来一个域对象,而在solr中是在schema.xml中进行配置。其中有域,动态域,复制域标签。

当搜索某个数据需要在两个域中进行搜索时,可以使用复制域,这样只需要发送一个请求,就可以在不同的域中进行搜索。因为使用copyField标签时,搜索的两个域会先保存到这两个域中,然后在转到一个text域进行合并保存,在搜索的时候就直接搜索text域。

 5. 中文分析器配置(IKAnalyzer)

要配置中文分词器,需要先了解schema.xml的配置。因为schema.xml已经配置了标准分词器

第一步:先将IKAnalyzer的jar包放入tomcat\webapps\solr\WEB-INF\lib

第二步:将分词器的配置文件放入tomcat\webapps\solr\WEB-INF\classes

第三步:在schema.xml中添加配置,如下

<!-- IKAnalyzer -->
<fieldType name="text_ik" class="solr.TextField" >
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType> <!-- IKAnalyzer Field -->
<field name="title_ik" type="text_ik" indexed="true" stored="true" />
<field name="content_ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>

第四步:重启tomcat服务,打开solr后台

最新文章

  1. sql注入过滤的公共方法
  2. yii2 打印sql语句
  3. 《windows程序设计》学习_3.1:画出雷区,左键的使用
  4. VS2010调用VLFeat
  5. 在程序加载过程中显示ProgressDialog 对话框
  6. 浅论Javascript在汽车信号测试中的应用
  7. echarts 柱状图,每根柱子显示不同颜色(随机显示和定制显示)
  8. 配置IIS网站,我遇到的那些坑~
  9. Module build failed: Error: Cannot find module &#39;babel-runtime/core-js/get-it
  10. Web测试入门:Selenium+Chrome+Python+Mac OS
  11. 【idea】Springboot整合jpa
  12. 一起学爬虫——PyQuery常用用法总结
  13. codeforces 3b之贪心算法
  14. docker ,docker与虚拟机的区别
  15. python3 对拉勾数据进行可视化分析
  16. visual studio 的git插件推荐
  17. 用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?
  18. npm包的更新说明,你还敢不看吗
  19. oracle exadata一体机虚拟机
  20. PG的集群技术:Pgpool-II与Postgres-XC Postgres-XL Postgres-XZ Postges-x2

热门文章

  1. mysql根据某个字段分组根据更新时间获取最新的记录
  2. RequireJS 2.0 正式发布
  3. Windows的任务管理器怎么显示进程的图标
  4. 正则表达式过滤联系方式,微信手机号QQ等
  5. 从list中随机选出几个数,并按照原来的顺序排列
  6. 【HTML&amp;CSS】文本的基本处理
  7. 详细分析UserLock如何保证高校内部信息安全
  8. [C#] SHA1校验函数用法
  9. solidity语言12
  10. Selenium2学习(十七)-- js处理日历控件(修改readonly属性)