配置Solr搜索引擎和Solr中文分词库
1.什么是 Solr?
1.1.Lucene['lu:si:n]
1.2.Solr['səulə]
Solr 是基于 Lucene 的企业级搜索引擎,是对 Lucene 的封装和扩展,是一个 war 包, 需要基于 Tomcat 等 web 容器运行。Solr 使项目更容易集成和开发搜索功能。
以下是 Solr 的官方简介:
Solr 是一个基于 Lucene 的 Java 搜索引擎服务器。Solr 提供了层面搜索、命中醒目 显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置, 而且附带了一个基于 HTTP 的管理界面。
Solr 已经在众多大型的网站中使用,较为成熟 和稳定。Solr 包装并扩展了 Lucene,所以 Solr 的基本上沿用了 Lucene 的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置, 某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的 索引。此外,很多 Lucene 工具(如 Nutch、 Luke)也可以使用 Solr 创建的索引。
总之:solr 是一个 java 搜索引擎服务器(是一套 war 程序),内部集成了 Lucene(apache 提供的一些对搜索引擎做支持的 jar 包)。 Solr 的替代产品有 ElasticSearch(ES)。.
2.为什么使用 Solr?
3.Solr 工作原理和概念
3.1.原理
1 .创建索引
2.根据索引查询
3.2.举个栗子
3.3.Solr 的世界观
Solr 对信息处理的基本单位是文档(Document),RDBMS 中的每一数据 在 Solr 中是一个文档。 对于菜谱数据的 Document,包含了佐料、步骤、时间、难度等要素对于人这个 Document 来说,可以包含姓名、年龄、爱好等要素。 Solr 把这些组成要素看做是 Fields(字段),姓名可以看做是一个 Field, 姓和名又可以看做是 Fields.Fields 可以包含不同类型的数据,对于书籍的名字可以认为是一个 text(文本/字符串),书籍的售价可以是一个number(数值/浮点型)。一旦你 指定了 Field 的数据类型,Solr 就可以以你想要的那种形式使用。
3.4.Solr 索引操作
可以向 Solr 索引 servlet 传递 4 个不同的索引请求:
(1) add/update 允许向 Solr 添加文档或更新文档。直到提交后才能搜索到这些添 加和更新。
(2) commit 告诉 Solr,应该使上次提交以来所做的所有更改都可以搜索到。
(3) optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。
(4) delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询返回的所有文档。
4.如何使用 Solr?
4.1.下载 Solr
选择 4.9.1 这个稳定版本
4.2.安装 Solr 服务
在计算机本地新建一个文件夹 D:\__dev-tools\solr-4.9.1(当然你可以随便起名字,下面简称 SOLR_HOME), 然后把 zip 解压后的
solr-4.9.1\example\solr 下的所有文件复制到 SOLR_HOME 下:
启动 Tomcat,待启动成功后,关闭 Tomcat。注意,此时 solr.war 包已经被 解压成 solr 文件夹。打开 Tomcat 的 webapps 目录,删除 solr.war 包,保留 solr文件夹。
修改配置文件 Tomcat 下 webapps\solr\WEB-INF\web.xml,让 Tomcat 中的 Solr 引用 solr/home 变量对应的路径 SOLR_HOME:
5.中文分词器
5.1.为什么要用分词器?
5.2.下载分词器
5.3.配置分词器
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false"
class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true"
class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name="hotelName" type="text_ik" indexed="true" stored="true"/>
<field name="address" type="text_ik" indexed="true" stored="true"/>
5.4.Solr 查询语法
5.5.Solr 多字段匹配
<field name="kw" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<copyField source="hotelName" dest="kw"/>
<copyField source="details" dest="kw"/>
<copyField source="address" dest="kw"/>复制域(复制字段)
5.6. solrj
5.6.1.添加依赖
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>5.3.1</version>
</dependency>
5.6.2.封装 Solr 查询对象
5.6.3.java 调用 Solr
编写如下 java 代码调用 Solr 进行搜索:
❤如果文章对您有所帮助,就请在文章末尾的左下角把大拇指点亮吧!(#^.^#);
❤如果喜欢HuangJunqi~先生分享的文章,就请给点个关注吧!(๑′ᴗ‵๑)づ╭❤~;
❤对文章有任何问题欢迎小伙伴们下方留言
配置Solr搜索引擎和Solr中文分词库相关推荐
- docker 安装 solr搜索引擎
关于solr Solr是一个独立的企业级搜索应用服务器,solr是以lucene为内核开发的企业级搜索应用 应用程序可以通过http请求方式来提交索引,查询索引,提供了比lucene更丰富的查询语言, ...
- 《Spring Boot 实战派》--13.集成NoSQL数据库,实现Elasticsearch和Solr搜索引擎
第13章 集成NoSQL数据库,实现Elasticsearch和Solr搜索引擎 关于搜索引擎 我们很难实现 Elasticseach 和 Solr两大搜索框架的效果:所以本章针对两大搜索框架,非常详 ...
- Centos下部署Solr 搜索引擎
一.环境准备: 系统环境:centos 6.5 tomcat 7.0.47 jdk-7u9 solr-4.7.0 首先将软件包上传到/tmp目录下 ...
- 增量索引和全量索引_搜索引擎(七)高可用的solr搜索引擎服务架构
经过前面一段时间的努力,终于把我所知道的关于solr 的内容都总结完了.前面讲到了solr 的安装配置,web管理后台的使用,solr 的查询参数和查询语法,还说到了solr的客户端 solrnet ...
- Mac下搭建solr搜索引擎与PHP扩展开发(上)
首先需要安装jdk,前往 https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html 自 ...
- 搭建Solr搜索引擎——Linux 爱旅行
一. 下载Solr 官网:https://lucene.apache.org/solr/ 下载地址:https://lucene.apache.org/solr/downloads.html 历史版本 ...
- 准确实用,7个优秀的开源中文分词库推荐
文章来自开源中国(微信ID:oschina2013) 如需转载请注明上述来源,其他来源无效并视为侵权 中文分词是中文文本处理的基础步骤,也是中文人机自然语言交互的基础模块.由于中文句子中没有词的界限, ...
- solr学习之(七)_学习solr的理由(solr的特点和应用领域)
Solr是一个可伸缩性的.能够即时部署的.致力于信息检索的.可以处理海量信息的.以处理自然语言文本为中心的.检索结果按相关性排序的企业级搜索引擎. Solr处理的业务需求有以下4个特点: 1.无结构化 ...
- solr crud_Spring Data Solr教程:CRUD(差不多)
solr crud 在我的Spring Data Solr教程的上一部分中,我们学习了如何配置Spring Data Solr. 现在该迈出一步,了解我们如何管理Solr实例中存储的信息. 此博客文章 ...
最新文章
- 可编程led灯带原理_88张图搞定层板灯带的设计、安装、收口及检修!
- 攻防世界 web(二)
- 导致散户亏损的三大根源
- FreeMarker_模板引擎_代码自动生成器_源码下载
- 0909 粗浅的认识编译原理
- bzoj 1597: [Usaco2008 Mar]土地购买【斜率优化】
- 国内第四大运营商中国广电成立:5G 192号段要来了!
- 【python】Python的基本数据类型之数字类型与字符串类型
- 服务器LCD显示面板,DELL服务器2950的错误代码表(前LCD面板)
- 查询所有的oracle表、表空间、数据库连接等信息
- Android getevent,sendevent,input keyevent
- MAC地址生成器(可带跳数)
- 比例电磁阀的工作原理
- 实验吧唯快不破writeup
- android 什么是有权查看使用情况的应用程序
- 每天一道算法题系列十七之电话号码的字母组合
- AutoJs学习-MC我的世界自动钓鱼
- 在html中写年月,Javascript+html:select年月日(出生日期)的写法
- 如何选择分析场景?2种指标梳理方式
- SSL/TLS - 什么是SSL?
热门文章
- 基于C++的吃豆人小游戏的设计与实现
- 35岁危机根源,“不够努力”该背锅么?
- 万达集团oracle考试,Oracle 12c OCM 直考体验
- teamviewer有linux安装教程,如何在Ubuntu 18.04上安装TeamViewer
- 关于最近无锡永中Office的消息
- 多种软件过程模型如何选择?
- 欣赏一个人,始于颜值,敬于才华,合于性格,久于善良,忠于人品
- php 图片圆角透明,CSS_使用CSS3实现圆角,阴影,透明,CSS实现圆角,阴影,透明的方法 - phpStudy...
- 从污浊不堪到波光粼粼 看生活污水处理的那些事儿~
- RK3326 Android 8.1 修改默认输入法为讯飞输入法——两种方法,推荐第二种(纯代码)