下载-安装-启动
- 首先去官网下载到指定目录,我用的是5.5.4 版本的, 如果同学们用的是6.x的建议看官网的getting started 来操作. 毕竟有些地方不一样.
因为5.5.4 已经满足一般学生党的需求了,不过话说6.x 有什么新特性我没有去考究过, 并且我运行的是单机版的solr, 如果同学需要部署分布式的,还是参考上文提到的getting start. - 解压缩
- 启动
- 这个时候我们可以在
8983
端口访问刚刚启动的Solr.
命令清单如下:
$ wget http://apache.fayea.com/lucene/solr/5.5.4/solr-5.5.4.tgz
$ tar -zvxf solr-5.5.4.tgz
$ cd solr-5.5.4
$ bin/solr start
初始化
- 建立Collection/Core Core是单机版的Collection .我们可以把他理解成数据库 后面再讲解
- 索引数据, 我们通过这一步给Collection提供数据. 因为检索的前提是有数据嘛, 得先把Collection喂饱 , 然后Collection自己有一套消化数据的算法,把我们提供的数据 建立索引,把索引放在内存中以便我们的检索.
命令清单如下:
$ bin/solr create -c demo #创建一个名为demo的Collection
$ bin/post -c demo docs/ #给docs/下的文件建立索引
检索
- 我们刚刚把docs/ 下的文件都发送到demo这个Collection里面去了. 假设docs/下有个文件叫index.html,内容如下:
- 这时候我们打开控制台,即访问http:x.x.x.x:8983,选择一个Collection
-
选择query功能 , 随便搜索一段我们index.html中的话,如"Additional documentation, especially focused on using Solr." 这个时候我们会发现,index.html 已经被我们查找出来了.
我们来看看Solr query返回的结果.
有一个responseHeader对象,表示这次检索的总体情况
有一个response对象, 是检索返回的内容主体.我们重点看看这个对象的字段代表什么含义
- numFound 匹配的结果总数.
- start 偏移量 相当于SQL 中的 limit 的第一个参数
- docs 这个是一个document对象列表, 表示匹配到的结果.
- document是什么? document就是Collection中的数据单元. 相当于数据库中的表. 一个document可以有多个字段. 比如我们的例子就有id,title等等. 这些都是可以自己定义的, 我们在下一篇文章中演示.
{
"responseHeader": {
"status": 0,
"QTime": 10,
"params": {
"q": "\"Additional documentation, especially focused on using Solr\"",
"indent": "true",
"wt": "json",
"_": "1491660892707"
}
},
"response": {
"numFound": 1,
"start": 0,
"docs": [
{
"id": "/usr/local/solr-5.5.4/docs/index.html",
"stream_size": [
4365
],
"x_parsed_by": [
"org.apache.tika.parser.DefaultParser",
"org.apache.tika.parser.html.HtmlParser"
],
"stream_content_type": [
"text/html"
],
"dc_title": [
"Apache Solr 5.5.4 Documentation"
],
"content_encoding": [
"UTF-8"
],
"resourcename": [
"/usr/local/solr-5.5.4/docs/index.html"
],
"title": [
"Apache Solr 5.5.4 Documentation"
],
"content_type": [
"text/html; charset=UTF-8"
],
"_version_": 1564118831183429600
}
]
}
}
所以,当我们有很多个html文件,我们将它们都塞进Solr里面并建立索引.这个时候我们搜索任意内容,就会得到匹配到一些html文件等等. 像上个例子.我们还可以指定字段来搜索,如q = title:Apache Solr 5.5.4 Documentation. 表示在title这一个字段上面查找跟Apache Solr 5.5.4 Documentation 相关的doc对象 , 同样也是可行的.
总结
这篇文章只是简单的走了一下流程. 先对Solr 做一个简单的helloworld出来.
通过这个helloworld. 我们发现:
- solr对文件(pdf,txt,html 等文本文件)的索引建立是 建立在其文本内容上. 不同的文件类型有不同的Parser来解析.比如html会有HtmlParser来解析.
- solr的检索是基于Collection的,不像我们的SQL 基于表格. 如果在SQL的概念来类比的话, 应该说是基于整个整个数据库, 对数据库所有的记录做一次检索. 然后将所有搜索到的记录(document)呈现出来.
- 我们把document的字段称为Filed, 每个Filed 有对应的FieldType. 每个FieldType有自己的索引建立规则, 比如如何分词之类的.