2012-03-28 11 views
8

Usiamo solr per creare un'applicazione di e-commerce e abbiamo prodotti raggruppati per sottocategoria in una categoria padre. Usiamo l'ordinamento dinamico per determinare dove il prodotto appartiene a una sottocategoria e lo stesso prodotto può apparire in più di una sottocategoria. Stiamo monitorando l'ordinamento utilizzando il campo dinamico e ogni prodotto ha più ordinamenti in base al numero di sottocategorie di appartenenza. Dobbiamo raggruppare questi prodotti nella sottocategoria e ordinarli utilizzando l'ordinamento appropriato. Un esempio qui sotto, qualsiasi aiuto sarebbe molto apprezzato e stiamo cercando di realizzarlo usando una singola query.Ordina gruppi diversi usando diversi ordinamenti in solr

  • Jeans
    • Bootcut
      • Product1
      • Product2
    • Magro
      • Product1
      • Product3

Prodotti sono seguente ordinamento

  • Product1-bootcutSortOrder-10 skinnySortOrder-1
  • Product2-bootcutSortOrder-3
  • Product3-skinnySortOrder-5

Risultato previsto considerando l'ordine crescente sotto ogni gruppo

  • Bootcut
    • Product2
    • Product1
  • sottile
    • Product1
    • Product3

Vogliamo solr di ordinare ogni singolo gruppo con il suo ordinamento - group.query = {sottocategoria: Bootcut} & group.sort = bootcutSortOrder asc & group.query = {sottocategoria: Magro} & group.sort = skinnySortOrder asc

Ciò che solr fa è che ordina sulla combinazione di bootCutSortOrder asc, skinnySortOrder asc.

È possibile in solr ordinare ogni sezione del gruppo con un proprio ordinamento?

stiamo usando l'ultima versione di solr e stiamo bene con solr 4 pure.

+2

Da questo commento in (corrente) fonte SOLR - https://github.com/apache/lucene- solr/blob/trunk/solr/core/src/java/org/apache/solr/search/Grouping.java # L295 - e il codice circostante, sembra che il fatto che un singolo ordinamento si applichi a tutti i gruppi è una limitazione riconosciuta che non è stato ancora affrontato. Se i tuoi gruppi includono tutti i risultati (non stai facendo affidamento sul tipo per restituire la parte superiore destra N), potresti ottenere/calcolare gli altri valori di ordinamento tramite uno pseudo-campo, quindi riordinare prima della visualizzazione. Quindi almeno sarebbe una query, restituendo tutti i dati necessari. – gojomo

risposta

Problemi correlati