(1) 什么是全文检索?
我们生活中的数据总体分为两种:结构化数据和非结构化数据。
1)结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
2)非结构化数据:指不定长或无固定格式的数据,如邮件,word 文档等。
非结构化数据又一种叫法叫全文数据。
(2) 什么是Lucene?
Lucene 是一个高效的,基于 Java 的全文检索库
(3) 什么是Solr?
Solr 是基于 Lucene 的面向企业搜索的 web 应用
2. Solr安装-安装Solr服务
(1) 如何在Linux环境中安装Solr服务?
1、 就是将 solr 的 war 包,拷贝到 tomcat 的 webapps 目录下。
2、 安装型用的jar包
3. Solr安装-安装Solr索引库
(1) 如何在Solr服务中配置索引库?
1、 将该索引库拷贝到指定目录下(可以是任意目录),虽然具备任意性。但是也不能太随便。 应该放到/usr/local/solrhome。先创建 solrhome 目
2、 配置的路径为索引库的根。可以使用 linux 中的 pwd 命令查看绝对路径,添加到节点的<env-entry-value>节点中
4. Solr索引库-目录结构
(1) SolrHome中的每一个目录的作用是什么?
1 solr.xml 配置 solr 集群
2 collection1(索引库:solr core)
3 core.properties 设置索引库的名称
4 data 存放索引
5 conf 索引库的配置目录
5. Solr索引库-schema.xml讲解
(1) schema.xml的作用是什么?
配置字段以及字段类型
(2) <field>是配置什么的?
定义域,即定义数据结构
(3) <field>中有哪些属性?每个属性的作用是什么?
name:表示域的名称,是强制必须有的属性
type:域类型的名称,与 fieldType 元素的 name 属性值对应,是强制必须有的属性 indexed:是否参与检索。true 即表示需要对该域进行索引。默认值为 false
stored:是否将 field 域中的内容存储到文档域,简单通俗的来说,就是你这一个 field 需不需要被当作查询结果返回。
required:表示这个域是否是必须要在 document 中存在,默认值为 false,如果此配 置项设为 true,则你的 document 中必须要添加此域,否则你创建索引时会抛异常。
(4) <fieldType>是配置什么的?
定义域的类型
(5) <fieldType>中有哪些属性?每个属性的作用是什么?
Name:域类型的名称,作为域类型标识符存在,在定义域(Field)时使用的类型 (FieldType)属性就是域类型的名称。
Class:域类型的数据类型,该属性指向的是 solr 中的已定义的类型,或者是用户定 义的类型,域类型中的数据会被初始化成 class 执行类类的对象。
sortMissingFirst/sortMissingLast:控制当排序域的值不存在时该文档(Document) 所在队列的位置。true 是则在队头/队尾
(6) <copyField>是配置什么的?
<copyField>:复制域。可实现更新与查询分离
(7) <copyField>中有哪些属性?每个属性的作用是什么?
<copyField source="item_title" dest="item_keywords"/>
Source:源域
Dest:目标域
6. Solr索引库-Solr的索引机制
(1) Solr索引库-Solr的索引机制
正排索引是以文档的 ID 为关键字,索引文档中每个字的位置信息,查找时扫描索引中 每个文档中字的信息直到找出所有包含查询关键字的文档
(2) 什么是倒排索引?
对数据进行分析,抽取出数据中的词条,以词条作为 key,对应数据的存储位置作为 value,实现索引的存储。这种索引称为倒排索引
7. Solr索引库-配置中文分词器
(1) 中文分词器IK Analyzer的作用什么是?
配置中文分词器
(2) 如何为Solr配置中文分词器?
上传中文分词器 jar 包,以及配置文件
将中文分词器的配置文件以及jar包拷贝到Solr所对应的目 录下
将配置文件需要放到 classes 目录下。 在 solr 中的 WEB-INF 下时没有 classes 目录的。我们需要先创建一个
Jar 包放到 WEB-INF/lib 目录下。
在 schema.xml 中配置中文分词器
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
8. Solr管理界面介绍
(1) Dashboard的作用是什么?
在 schema.xml 中配置中文分词器
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
(2) Logging的作用是什么?
显示 solr 运行出现的异常或错误
(3) Core Admin的作用是什么?
主要有 Add Core(添加核心), Unload(卸载核心),Rename(重命名核心),Reload(重 新加载核心),Optimize(优化索引库) Add Core 是添加 core : 主 要 是 在 instanceDir 对 应 的 文 件 夹 里 生 成 一 个 core.properties 文件
(4) Java Properties的作用是什么?
看到 java 相关的一些属性的信息
(5) Thread Dump的作用是什么?
查看每个线程的详细信息,以及状态信息
(6) Core Selecter(core选择器)的作用是什么?
Core Selecter(core 选择器)
(7) overview的作用是什么?
包含基本统计如当前文档数;和实例信息如当前核心的配置目录
(8) Analysis(分析)的作用是什么?
检验分词效果
(9) Dataimport(导入数据)的作用是什么?
导入数据
(10)Documents的作用是什么?
(索引文档)索引的相关操作,如:增加,修改,删除等
(11)Files文件夹的作用是什么?
solr_home 下的 core 下的 conf 下的相关文件,可单击查看里面的内
(12)Ping的作用是什么?
查看当前核心库还是否工作的以及响应时间
(13)Plugins /stats的作用是什么?
Solr 自带的一些插件以及我们安装的插件的信息以及统计
(14)Query(查询页面)的作用是什么?
查询的结果要显示哪个字段,就得将 schema.xml 文件配置字段时的 stored 属性设为 true
(15)Replication的作用是什么?
请求处理器
(16)Schema的作用是什么?
展示该 Core 的 shema.xml 文件中的内容
9. 测试SolrJ-创建项目添加依赖
(1) 什么是SolrJ?
solrJ 是访问 Solr 服务的 JAVA 客户端,提供索引和搜索的请求方法,SolrJ 通常嵌入在 业务系统中,通过 solrJ 的 API 接口操作 Solr 服务。