solr - Solr 具有单个查询或范围的多个方面
问题描述
我有一个图书数据库。书籍的流派 ID 为整数,年龄范围也为整数 age_min 和 age_max。
当我进行查询时,我想知道 1) 结果中的不同类型 ID 的列表,以及 2) 这些结果中的任何一个都在不同的 1 个或多个年龄范围(0-4、5-7 等)之间.)。
我想要一个genre_ids 列表以及0-4、5-7、7-10 等年龄段的书籍数量。
我可以将 facet.field 用于genre_ids 并且效果很好,但是除了不同的年龄范围之外,我无法弄清楚是否还有它。
我对 JUSTgenre_id 方面的查询如下所示:
所以,不仅要告诉我构成结果的genre_ids,还要告诉我这些书中有多少是0-4岁、5-7岁等。
就像是:
"facet_fields":{
"genre_id":{
"38":998,
"638":915,
"ages":{
"0-4":4,
"5-7":10,
等等。
有没有办法从一个 solr 查询中获取所有这些信息?
解决方案
我有点过度思考我的问题,我只需要使用方面查询。
facet.field=genre_id
(用计数获得不同的genre_ids)
facet.query=age_min:[*+TO+4]
facet.query=age_min:[4+TO+7]+AND+age_max:[7+TO+99]
facet.query=age_min:[7+TO+10]+AND+age_max:[10+TO+99]
facet.query=age_min:[13+TO+99]+AND+age_max:[13+TO+99]
(获取每个年龄范围的计数)
结果:
"facet_counts":{
"facet_queries":{
"age_min:[* TO 4]":6,
"age_min:[4 TO 7] AND age_max:[7 TO 99]":16},
....
"facet_fields":{
"genre_id":[
"818",740,
"51",707,
"1637",373,
....
我只希望我能给 facet_queries 一个“名字”,但除此之外,这是我的工作解决方案。
推荐阅读
- python - 有没有更好的方法在多个条件下使用 map 函数来做 pandas groupby?
- android-recyclerview - 在附加 PageSnapHelper 的 RecyclerView 中使用 TouchImageView?
- android - 代理块文件 - 手动下载有效。摇篮仍然无法正常工作
- google-sheets - SUM 时间值,其中右侧的列具有特定的字符串值
- matlab - 矩阵上拆分矩阵的结果是标量值吗?
- java - io.sentry.SentryClientFactory - 创建有效 DSN 时出错:“https://public:private@host:port/1”
- spring-webflux - @Scheduled 和 Spring webflux
- java - 停止数组中正在运行的线程
- django - 服务器响应状态为 415(不支持的媒体类型) - vue.js 和 python django
- wpf - Eyeshot 在整个应用程序中禁用触摸事件