Skip to content

Commit 79adcbd

Browse files
author
centmeng
committed
solr
1 parent d57a68e commit 79adcbd

19 files changed

+133
-0
lines changed

src/com/msj/solr/ReadMe.md

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
## Solr技术简介
2+
> Solr基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
3+
4+
### 为什么使用Solr
5+
- 单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议使用
6+
- 通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统以来紧密,不方便扩展,不建议使用
7+
- 基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为Solr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。
8+
- Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr索引的实现方法很简单,用POST方法向Solr服务器发送一个描述Field及其内容的XML文档,Solr根据xml文档添加、删除、更新索引。Solr搜索只需要发送HTTP GET请求,然后对Solr返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理页面,通过管理页面可以查询Solr的配置和运行情况。
9+
10+
<img src = "./picture/Solr示意图.png">
11+
12+
### Solr 下载与安装
13+
下载地址:[http://www.apache.org/dyn/closer.lua/lucene/solr](http://www.apache.org/dyn/closer.lua/lucene/solr)
14+
15+
#### 安装步骤
16+
17+
<img src = "./picture/solr安装.png">
18+
19+
### Solr操作
20+
<img src = "./picture/Solr操作1.png">
21+
<img src = "./picture/Solr操作2.png">
22+
23+
## 搜索引擎
24+
### 全文检索步骤
25+
1. 信息源->本地即solr(进行加工和处理)->建立索引库(信息集合,一组文件的集合)
26+
2. 搜索的时候从本地的(索引库)信息集合中搜索
27+
3. 文本在建立索引和搜索时,都会先进行分词(使用分词器)
28+
4. 索引的结构:
29+
- 索引表(存放具体的词汇,哪些词汇在哪些文档里存储,索引里存储的就是分词器分词之后的结果)
30+
- 存放数据(文档信息集合)
31+
5. 用户搜索时:首先经过分词器进行分词,然后去索引表里查找对应的词汇(利用倒排序索引),再找到对应的文档集合。
32+
6. 索引库位置(Directory)
33+
7. 信息集合里的每一条数据都是一个document(存储所有信息,他是一个Filed属性的集合)
34+
8. store是否进行存储(可以不存储,也可以存储)
35+
9. index是否进行存储(可以不索引,也可以索引,索引的话分为分词后索引,或者直接索引)
36+
37+
<img src = "./picture/全文检索步骤.png">
38+
39+
### 添加中文分词器
40+
> 无论是Solr还是Lucene,都对中文分词不太好,所以我们一般索引中文的话需要使用IK中文分词器
41+
42+
- 下载IK Analyzer 2012FF_hf1.zip
43+
- 进行解压
44+
- 安装:把IKAnalyzer2012FF_u1.jar拷贝到tomcat的solr应用服务下
45+
- cd /usr/local/software && cp IKAnalyzer2012FF_u1.jar /usr/local/apache-tomcat-7.0.29/webapps/solr/WEB-INF/lib/
46+
- 创建文件夹:/usr/local/apache-tomcat-7.0.29/webapps/solr/WEB-INF/classes
47+
- 把IKAnalyzer.cfg.xml和stopword.dic拷贝到新创建的classes目录下即可
48+
- 修改solr core的schema文件,默认是位置
49+
- vim /usr/local/solr-4.10.3/example/solr/collection1/conf/schema.xml
50+
- 添加如下配置:
51+
52+
```xml
53+
<fieldType name="text_ik" class="solr.TextField">
54+
<!-- 索引时候的分词器-->
55+
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucenne.IKAnalyzer" />
56+
<!-- 查询时候的分词器-->
57+
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucenne.IKAnalyzer" />
58+
</fieldType>
59+
```
60+
61+
- 启动solr:/usr/local/apache-tomcat-7.0.2/bin/startup.sh
62+
- 进入页面在分词器选择ik中文分词器,进行输入:互联网应用架构。
63+
64+
<img src = "./picture/中文分词器选择.png">
65+
66+
### 自定义词库
67+
- 修改 /usr/local/apache-tomcat-7.0.29/webapps/solr/WEB-INF/classes/IKAnalyzer.cfg.xml目录下的IKAnalyzer.cfg.xml配置文件,添加如下配置
68+
69+
```xml
70+
<!--使用的分词,一个词一行-->
71+
<entry key="ext_dict">ext.dic;</entry>
72+
<!--进制使用的分词-->
73+
<entry key="ext_stopwords">stopword.dic;</entry>
74+
```
75+
76+
- 新建ext.dic文件,在里面添加内容(注意:ext.dic的编码必须是Encode in UTF-8 without BOM,否则自定义的词库不会被识别)
77+
78+
## Solr基础
79+
80+
### Solr索引操作
81+
82+
<img src = "./picture/Solr索引操作.png">
83+
84+
### Solr搜索
85+
86+
<img src = "./picture/Solr搜索.png">
87+
88+
### Solr模式
89+
90+
<img src = "./picture/Solr模式1.png">
91+
<img src = "./picture/Solr模式2.png">
92+
93+
### Solr添加信息对象
94+
95+
<img src = "./picture/Solr添加信息对象.png">
96+
97+
### Solr查询详细使用
98+
- 查询分页start(起始位置)、rows(数据条数)、sort(排序)
99+
- 查询操作拼接:可使用AND、OR、NOT进行拼接联合查询
100+
- 查询操作区间:“price:[5 TO 10]”表示包含,“price:{5 TO 10}”为不包含5到10的数据
101+
- 查询操作过滤器:addFilterQuery提高查询效率
102+
- 查询操作开启高亮设置:setHighlight*等方法,可以高亮显示结果信息
103+
- 查询操作分片处理:可以进行统计分析单词出现次数
104+
105+
##
106+
### Solor管理员命令两种手段
107+
1. 直接使用curl命令进行操作solr数据:如
108+
- 删除:curl http://localhost:8080/solr/update --data-binary"<delete><query>id:1</query></delete>" -H 'Content-type:text/xml;charset=utf-8'
109+
- 提交:curl http://localhost:8080/solr/update --data-binary"<commit/>" -H 'Content-type:text/xml;charset=utf=8'
110+
2. 进入:/usr/local/solr-4.10.3/example/exampledocs 下执行java -jar post.jar命令进行维护数据操作
111+
- 删除:java -Ddata=args -jar post.jar"<delete><id>42</id></delete>"
112+
- 帮助:java -jar post.jar -help
113+
114+
### Solr集群搭建
115+
>与Zookeeper做协调
116+
117+
## Solr实例
118+
> Solr有全量同步和增量同步两种
119+
120+
### Solr的DIH 全量同步
121+
<img src = "./picture/SolrDIH全景同步1.png">
122+
<img src = "./picture/SolrDiH全量同步2.png">
123+
<img src = "./picture/SolrDiH全量同步3.png">
124+
> 第七步:Solr服务器的时间要和mysql服务器的时间统一
125+
126+
<img src = "./picture/SolrDiH全量同步4.png">
127+
128+
### Solr的DIH增量同步
129+
>通过last_modify字段做判断是否更新,即根据时间来确定
130+
131+
<img src = "./picture/SolrDIH增量同步1.png">
132+
<img src = "./picture/SolrDIH增量同步2.png">
133+
<img src = "./picture/SolrDIH增量同步3.png">
420 KB
Loading
720 KB
Loading
1 MB
Loading
803 KB
Loading
1020 KB
Loading
106 KB
Loading
710 KB
Loading
694 KB
Loading
614 KB
Loading

0 commit comments

Comments
 (0)