1. Solr简介:
Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML、 JSON、Python、Ruby 、Php、csv格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 创建的索引。
2.solr we管理界面的主界面说明;
1) 访问solr主页,http://服务器ip:端口(默认为80)/solr,此文档说明的solr服务是部署在tomcat下,默认显示此页内容,包含solr版本(此版本为7.2),包含系统内存和jvm内存的使用情况,jvm参数等;
2)logging 日志信息
可以查看在使用solr过程中产生的日志信息,也可以临时改变日志设置;
3)Core Admin 索引库管理
这个界面很重要,这可以使多核的配置,索引库的优化等,变得非常简单;
主要功能包括:Add Core(添加核心,即索引库),Unload(卸载核心),Rename(重命名核心),Optimize(优化索引库)。如我这里是三个核心。
4)Java Properties java属性
Java和tomcat一些属性信息,jdk版本信息等等
5)Thread Dump 中可以看到你的JVM 中的所有活动线程的Thread Dump
3.Core selector核心选择器
每个核心中有大量核心相关页面。这些核心相关页面允许你做下面的事情:
1)查看核心相关的属性,例如,你可以在主核心(例如,core0)页面查看到 Lucene segments 的数量等基本信息。
2)从 Analysis 分析文本内容;
此处可以分析你所配置的分词器是否生效,可以选择已经配置分词的字段,输入一句话,Analyse Values可以查看是否分词;
3)使用 Query 执行查询。
Query操作说明
http://localhost:8080/solr/test/select?q=name:小明&sort=id desc&start=0&rows=2&fl=name,id&mm=AND&hl=true&hl.fl=name&hl.simple.pre=<font color="red>&hl.simple.post=</font>
返回类型:查询后结果集类型,默认类型为json,在请求中可以设置返回类型
请求连接:http://localhost/solr/#/core0/?为默认实例参数
描述:每个参数的实际作用描述
返回类型 | 请求连接 | 描述 |
json | fl=title,id | 是逗号分隔的列表,用来指定文档结果中应返回的 Field 集。默认为 “*”,指所有的字段。 |
json | defType=lucene | 指定query parser,常用defType=lucene, defType=dismax, defType=edismax
|
json | qf=content | query fields,指定solr从哪些field中搜索。 |
json | Pf=参数 | 用于指定一组field,当query完全匹配pf指定的某一个field时,来进行boost。 |
json | fq=参数:查询内容 | filter query,过虑查询。 |
json | mm=AND | minimal should match。Solr支持三种查询clause,即“必须出现”, “不能出现”和“可以出现”,分别对应于AND, -, OR。 在默认情况下,使用OR这个clause。mm用于设置在使用OR这个clause时,需要出现最少的满足条件的clause数量。 |
xml | wt=xml | writer type,指定输出格式,可以有 xml, json, php,ruby等。 |
json | df=title | 默认的查询字段title。 |
json | qt=standard | query type,指定那个类型来处理查询请求,一般不用指定,默认是standard。 |
|
|
|
4)Solrt通过url方式删除数据
Update操作说明
发送请求:
http://localhost:8080/solr/update/?stream.body=
<delete><id>id值</id></delete>&stream.contentType=text/xml;charset=utf-8&commit=true
返回处理结果:主要看状态码
执行正常
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">112</int>
</lst>
</response>
执行失败,原因是请求的参数有误
<response>
<lst name="responseHeader">
<int name="status">400</int>
<int name="QTime">4</int>
</lst>
<lst name="error">
<str name="msg">
no field name specified in query and no default specified via 'df' param
</str>
<int name="code">400</int>
</lst>
</response>
根据id删除数据
根据查询参数条件删除数据
返回类型:查询后结果集类型,默认类型为json,在请求中可以设置返回类型
请求连接:http://192.168.40.11/solr/#/core0/?为默认实例参数
描述:每个参数的实际作用描述
例如删除所有: <delete><query>*:*</query></delete>
stream 相关参数:
stream.file=(服务器本地文件);
stream.url 分别指到你的删除文本,这里是直接字符串内容用 stream.body参数。
commit 参数是指提交,提交了才能看到删除效果。
删除指令有两种,一是:用 <id></id>包装;二是:<query></query>包装。指令都很明显,一个是 id值(是在schema.xml的 uniqueKey所指字段的值,而不是索引内部的 docId);query值是查询串,如:title:"solr lucene"。
增量更新
http://localhost:8080/solr/test/dataimport?entity=solr_test&command=delta-import&clean=false&commit=true&optimize=true
高亮查询
http://localhost:8080/solr/test/select?q=name:lif&sort=id desc&start=0&rows=2&fl=name,id&mm=AND&hl=true&hl.fl=name&hl.simple.pre=<font color=red>&hl.simple.post=</font>
删除
http://localhost:8080/solr/test/update?_=1517479941819&commitWithin=1000&overwrite=true&wt=json post <add><delete><id>8</id></delete></add>