2012-03-28 4 views
8

Wir verwenden solr, um eine E-Commerce-Anwendung zu erstellen, und wir haben Produkte gruppiert nach Unterkategorie innerhalb einer übergeordneten Kategorie. Wir verwenden eine dynamische Sortierreihenfolge, um zu bestimmen, wo das Produkt in einer Unterkategorie liegt, und das gleiche Produkt kann in mehr als einer Unterkategorie erscheinen. Wir verfolgen die Sortierreihenfolge mithilfe des dynamischen Feldes und jedes Produkt hat mehrere Sortierreihenfolgen, abhängig davon, zu wie vielen Unterkategorien es gehört. Wir müssen diese Produkte in der Unterkategorie gruppieren und sie in der richtigen Sortierreihenfolge sortieren. Ein Beispiel unten, jede Hilfe würde sehr geschätzt werden und wir versuchen, es mit einer einzigen Abfrage zu erreichen.Sortieren verschiedener Gruppen mit verschiedenen Sortierreihenfolgen in solr

  • Jeans
    • Bootcut
      • Product1
      • Product2
    • dünne
      • Product1
      • Product3

Produkte haben folgende Sortierung

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

Erwartetes Ergebnis unter Berücksichtigung der Sortierreihenfolge unter jeder Gruppe aufsteigend

  • Bootcut
    • Product2
    • Product1
  • dünne
    • Product1
    • Product3

Wir wollen solr jede einzelne Gruppe mit seiner Art sortieren - group.query = {Subkategorie: Bootcut} & group.sort = bootcutSortOrder asc & group.query = {Subkategorie: Dünnes} & group.sort = skinnySortOrder asc

Was solr tut ist, dass es auf der Kombination von bootCutSortOrder asc, SkinnySortOrder asc sortiert.

Ist es in solr möglich, jeden Abschnitt der Gruppe mit einer eigenen Sortierreihenfolge zu sortieren?

wir verwenden die neueste Version von solr und sind auch mit solr 4 in Ordnung.

+2

Von diesem Kommentar im (aktuellen) SOLR Quelle - https://github.com/apache/lucene- solr/blob/Stamm/solr/core/src/java/org/apache/solr/search/Grouping.java # L295 - und der umgebende Code, es scheint, dass die Tatsache, dass eine einzige Art für alle Gruppen gilt, eine anerkannte Einschränkung ist das wurde noch nicht angegangen. Wenn Ihre Gruppen alle Ergebnisse enthalten (Sie sind nicht darauf angewiesen, dass die Sortierungen die rechte obere N zurückgeben), könnten Sie vielleicht die anderen Sortierwerte über ein Pseudofeld ermitteln und dann vor der Anzeige neu sortieren. Dann wäre es wenigstens eine Abfrage, die alle benötigten Daten liefert. – gojomo

Antwort