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
- Bootcut
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.
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