Solr - como "agrupar" e "limitar"?
Digamos que indexei o seguinte da minha base de dados:
======================================
| Id | Code | Description |
======================================
| 1 | A1 | Hello world |
| 2 | A1 | Hello world 123 |
| 3 | A1 | World hello hi |
| 4 | B1 | Quick fox jumped |
| 5 | B1 | Lazy dog |
...
além disso, diga que o utilizador procura por "Olá", que deve devolver os registos 1, 2 e 3. Existe uma maneira de fazer Solr "grupo por" o campo Code
e aplicar um limite (digamos, 10 registros)? Estou à procura de uma contraparte SQL do grupo por e limite.
também, quando fizer este "grupo por", quero que escolha o documento mais relevante e use o campo Description
desse documento como parte do retorno.
7
Author: StackOverflowNewbie, 2010-11-29
3 answers
Dê uma olhada em Campo colapsando, disponível no Solr 4.0. Grupos de classificação sobre a relevância: group.sort=score desc
.
12
Author: Karl Johansson, 2010-11-29 12:04:40
Nota:
Resposta: iniciar - > resposta iniciar a sua identificação. linhas - > como wat número de linhas .
Exp
1 step
&start=0&rows=3
2 step
&start=3&rows=3
3 step
&start=6&rows=3
etc.
{
"responseHeader":{
"status":0,
"QTime":1,
"params":{
"fl":"displayterm",
"indent":"true",
"start":"0",
"q":"displayterm:new",
"q.op":"and",
"group.field":"displayterm",
"group":"true",
"wt":"json",
"rows":"3"}},
"grouped":{
"displayterm":{
"matches":231,
"groups":[{
"groupValue":null,
"doclist":{"numFound":220,"start":0,"docs":[
{
"displayterm":"Professional News"}]
}},
{
"groupValue":"general",
"doclist":{"numFound":1,"start":0,"docs":[
{
"displayterm":"General News"}]
}},
{
"groupValue":"delhi",
"doclist":{"numFound":2,"start":0,"docs":[
{
"displayterm":"New Delhi"}]
}}]}}}
0
Author: Rahul Yadav, 2016-12-13 06:57:41
Adicione o seguinte campo à sua pesquisa
- 'grupo': 'true', Grupo.campo": "Fonte", Grupo.main': 'true', Grupo.Limite": 10,
0
Author: Kanchan Sarkar, 2017-08-01 11:23:47