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.

Claro, eu ... poderia apenas ter Solr devolver tudo para a minha aplicação e eu posso manipular os resultados para fazer o grupo por e limite. Prefiro não fazer isto, se possível.

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

Http://XXX.XXX.XXX.XXX:8080/solr/autocomplete/select?q=displayterm: new&wt=json&indent=true&Q. op=and&fl=displayterm&group=true&group.campo=displayterm & rows=3 & start=0

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