前面solr跟中文分析器已经安装配置好了,进入后台管理页面查看如下。
1、DashBoard:solr的版本信息、jvm的相关信息还有一些内存信息。
2、Logging:日志信息,也有日志级别,刚进入查看的时候肯定是有几个警告(warn)信息的,因为复制solr的时候路径发生了变化导致找不到文件,但是并不影响。
3、Core Admin:SolrCore的管理页面,也就是一个solr实例(前面说过Collection1就是一个solr实例),可以理解为一个数据库,所以外部可以对该solr实例中的数据进行增删改查操作。一个solr工程可以有多个SolrCore,它们之间不相互影响。一开始我们创建solrhome的时候添加了solr实例,那么需要添加别的怎么办呢?可以简单地在Collection1所在文件下下,复制该Collection1粘贴改名为Collection2,然后修改配置文件core.properties的name=Collection2。如下:
4、Java Properties:顾名思义,java的相关配置,比如类路径,文件编码等。
5、Thread Dump:solr服务器当前活跃的一些线程的相关信息。
以上的5个了解一下就行。
6、Core Selector:选择一个Solr实例进行操作。
下面详细介绍选择的Collection1进行增删改查操作。
solr相关操作
在将Ik分析器配置的时候已经配置好了业务域类型和业务域。如下:
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
分别表示:
1、商品标题
2、商品卖点
3、商品价格
4、商品图片
5、分类名称
注:不需要自己定义id的域,因为solr要求必须有唯一标识,id这个域他也给我们定义好了。
1、文档的添加
需求:添加商品id为1的商品
/update:表示修改操作,这里也就是增删改。
Document Type:文档类型,主要用的是JSON(增和改),XML(删除)。
Document(s):需要进行的文档操作。
Commit Within:执行时间,ms。
Overwrites:是否覆盖
Boost:公平性(忽略)。
点击Submit Document按钮后执行添加文档操作。其实添加的时候先会查询有没有id为1的商品,没有的话则添加,有的话则覆盖(修改)。Status:Success表示操作成功了。然后可以去查询一下。
查询到了刚才添加的商品(暂时忽略是怎么查的,待会会讲到查询)。
2、文档的修改
讲添加的时候已经讲过修改了。可以理解为就是根据id查询信息,查询到了之后再覆盖(修改)。比如我这里要修改上面添加的id为1的商品,标题为”苹果10plus”,价格300。
点击提交按钮后再查询id为1的商品信息。
发现id为1的商品的标题跟价格已经改了。
3、文档的删除
1、根据id删除
删除前面添加的id为1的商品
将Document Type改为XML, 然后document(s)中输入:
<delete>
<id>1</id>
</delete>
<commit/>
2、根据查询到的索引数据删除
<delete>
<query>item_title:"苹果10plus"</query>
</delete>
<commit/>
3、删除所有文档
<delete>
<query>*:*</query>
</delete>
<commit/>
表示删除所有记录
4、查询索引数据
参数介绍:
1、q:查询字符串,可理解为根据关键字查询的关键字。必填项,如果查询所有则是
*:*
查询商品标题中包含”苹果的”商品信息
item_ittle:"苹果"
共查询出来了94条相关信息。
2、fq:查询过滤器,比如查询商品价格在7000000(单位是分)以上的,标题中好友”苹果的”,商品信息。
item_price:[700000 TO *]
一共查询出来了8条记录。
3、sort:排序规则,field desc(asc),比如查询商品价格在7000000(单位是分)以上的,标题中好友”苹果的”(同上),id降序排的商品信息。
id desc
当然还是查询出来8条商品记录,但是这里是按照id降序进行了排列。
4、fl:输出项,即查询结果中列出来的field。比如查询商品价格在7000000(单位是分)以上的,标题中好友”苹果的”,id降序排的(同上),结果中只列出商品id、标题、价格的商品信息。
id,item_title,item_price
5、df:指定默认查询的field,如果这里指定了默认查询field,那么在查询字符串q里面就可以直接写查询关键字了。
q:
"苹果"
df:
item_title
查询效果跟上面是一样的。
6、start,rows:分页查询的开始下标位置跟查询记录数
比如查询条件跟上面还是一样,但是查询的下标是3,查3条。
start,rows:
3 3
搜索结果能看到,查询开始下标为3,查出三条数据。
7、wt:查询结果输出格式,前面都是用的json,比如这里我要用xml格式输出(其实不会这样做),另外还有php,ruby,python等输出格式。
说到这感觉跟sql类似。后面还有个有特色的参数,hl。
8、hl:是否显示高亮,如果显示的话那么需要填下如下
hl.fl 显示高亮的field
hl.simple.pre 显示高亮的格式的前缀 如<em>,<span>
hl.simple.post 显示高亮的格式的后缀如</em>,</span>
比如查询结果还是跟上面一样,但是需要显示商品标题高亮,格式为
注:其实最后我们在java中实现的时候,为了显眼会设置样式,比如颜色为红色,那么在代码实现时候可以设置。
<em style=’color:red’>
到这里使用后台管理界面进行基本操作就结束了。