Solr入门(二)之Schema API和Facet

Solr入门(二)

重启Solr

solr start -c -p 8983 -s ../example/cloud/node1/solr

solr start -c -p 7574 -s ../example/cloud/node2/solr -z localhost:9983

创建新数据集

即将演示的特性:field guessing。

这种field guessing特性的模式被称为:Schemaless。

什么是schema?

我想到了这三个词:模式,范式,配置

solr 的 schema 用来定义属性和属性类型,帮助solr去索引数据

创建数据集

使用configSet 创建数据集,例子中使用默认的configset创建,这种不建议在生产环境,不过我们这里主要是测试。

-s 2 -rf 2表示把数据集分成两个分片,每个分片有两个副本。

 

准备为Films数据集使用Schemaless特性

Schemaless这个特性,就是你不需要指定一个schema来让solr建立索引,让solr猜你要为哪些关键词数据建索引等信息。

当然这里猜也是基于默认schema,默认分词算法的。

之所以不建议在生产环境直接使用这个特性,就是不能保证猜的每次都是对的。当你的大量数据在线上被使用,然而用户搜索的时候,solr猜关键词猜错了,就会很麻烦,需要重新建立索引。

总之,不要过分相信工具提供的特性,solr提供schema是有原因的,需求总是复杂和无尽的。

数据类型修正

官网举了个例子来说明Schemaless这个事:

比如如果为电影名建索引时,遇到的第一个电影的名字叫.45,那么solr可能认为电影名(names)字段的类型是float,很明显这是错的。需要修正为string。

使用Schema API:

curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field": {"name":"name", "type":"text_general", "multiValued":false, "stored":true}}' http://localhost:8983/solr/films/schema

使用AdminUI

设置schema索引所有字段

Schema API:

curl -X POST -H 'Content-type:application/json' --data-binary '{"add-copy-field" : {"source":"*","dest":"_text_"}}' http://localhost:8983/solr/films/schema

AdminUI:

上述做的事情是:将所有字段属性复制到_text_中。

这个拷贝如果是全量,在生产环境数据量大的时候会很慢。

建立Film的数据索引

 

去AdminUI,搜索可以看到1100条结果:

 

Faceting

facet这个单词谷歌翻译了下,翻译作"面"。有方面或者切面的意思。具体什么意思呢?查一下就清楚了:

如上的查询条件后,可以看到返回的是一个聚合后的结果,统计每种类型的电影的数量。

使用mincount参数可以限制查询数量大于200的值

http://localhost:8983/solr/films/select?=&q=*:*&facet.field=genre_str&facet.mincount=200&facet=on&rows=0

关于Faceting使用的更多信息在这里可以查询到。

Range Facets

范围查询,比如查询时间范围

Pivot Facets

按电影类别分类,再统计类别基础上各导演的电影数。

http://localhost:8983/solr/films/select?q=*:*&rows=0&facet=on&facet.pivot=genre_str,directed_by_str

看一下结果就更明白了

总结:

1、介绍了Schema API的使用

2、使用facet进行不同维度查询

查范围、分类、各个分类下的总数

 

收尾

清理数据集

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值