背景:
sorl是以lucene为内核开发的企业级搜索应用应用程序可以通过http请求方式来提交索引,查询索引,提供了比lucene更丰富的查询语言,是一个高性能,高可用环境全文搜索引擎
sorl与es的区别:
1.当实时建立索引的时候,sorl会产生阻塞而es不会,es查询性能要高于sorl。
2.在不断动态添加数据的时候,sorl的检索效率会变得低下而es没有什么变化。
3.Sorl利用zookeeper进行分布式管理,而es自身带有分布式管理功能。
Sorl一般都要部署到web服务器上,比如Tomcat。启动tomcat的时候需要配置Tomcat与sorl的关联。
4.Sorl支持更多的格式数据【xml,json,csv等】而es仅支持json文件格式。
5.Sorl是纯搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。单纯的对已有数据进行检索的时候,sorl效率更好,,高于es。
6.Sorl官网提供的功能更多,而es本身更注重于核心功能,高级功能多有第三方插件。
1、JDK的要求
Solr 4.10 要求JDK版本必须是1.7或更高。
2、sorl的下载地址
- https://dlcdn.Apache.org/lucene/solr/
- 下载得到zip压缩包,下载的版本为8.11.2. 文件大小209MB左右。对压缩包进行解压可以查看到相应的目录结构
3、安装
1、 将solr-8.11.2.zip文件拷贝到D盘;(或者其他盘都可以,只要目录中不要出现中文就行。)
2、 解压solr-8.11.2.zip文件,得到solr-8.11.2目录。
3、 运行 cmd 执行命令sorl start(进入C:solr-8.11.2bin):
4、浏览器打开http:localhost:8983,可以查看到sorl的一些基本信息
5、运行cmd执行命令sorl stop -p 8983,进行停止服务
6、至此代表sorl已经安装成功了
7、问题的解决
add core 报错Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find resource....
解决方案:拷贝solr-8.11.2serversolrconfigsets_default下面的conf到solr-8.11.2serversolrnew_core下面,重新页面上点击add core就可以进行添加成功了
8、导入测试的数据
JAVA -Dtype=text/csv -Durl=http://localhost:8983/solr/new_core/update -jar post.jar books.csv
9、访问索引文档
查询参数
- q - 查询字符串,必须的。
- fl - 指定返回那些字段内容,用逗号或空格分隔多个。
- start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。
- rows - 指定返回结果最多有多少条记录,配合start来实现分页。
- sort - 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]。示例:(inStock desc, price asc)表示先 "inStock" 降序, 再 "price" 升序,默认是相关性降序。
- wt - (writer type)指定输出格式,可以有 xml, json, php, phps。
- fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=*&fq=price:[0 TO 6],找所有的内容,并且price是0到6之间的
- 首字母搜索
现在我们将告诉你如何搜索记录,如果我们只知道起始字母或单词,不记得完整的标题。我们可以用下面的查询检索结果。
http://localhost:8983/solr/new_core/select?q=name:"A"
输出将列出所有的书籍字母A盯着
- 按名称搜索
我们将用它的名字检索书的细节。要做到这一点,我们将使用下面的语法。URL中的参数“Q”是查询事件。
打开浏览器下列URL。红色字体文字可以打开导入的book.csv的文件
http://localhost:8983/solr/new_core/select?q=name:"A Game of Thrones"
- 搜索使用的条件
Solr的支持条件的搜索。我们可以设置条件,我们的查询提供了“FQ”参数。在下面我们将告诉你如何查询价格低于¥6的书。
http://localhost:8983/solr/new_core/select?q=*&fq=price:[0 TO 6]
输出将只列出这是低于$ 6的书籍。