ich eine Facette Feld bin Abfrage, die wie folgt aussieht:SOLR - Auftrag Facette Werte case-insentive während des ursprünglichen Wertes in Facette Ergebnis Erhaltung
<field name="brand" type="string" indexed="true" stored="false />
Die string
Typdefinition:
<fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true"/>
I Sortieren Sie die Facettenwerte basierend auf index
: f.brand.facet.sort=index
.
Das gibt mir ein Ergebnis wie folgt aus:
Aaaa (5)
Bbbb (14
Cccc (8)
abbb (29)
Ich möchte die Werte Groß- und Kleinschreibung sortieren, so dass ich versuchte, ein neues fieldType
mit LowerCaseFilterFactory
zu machen:
<fieldType name="text_facet" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Nach reindexing das Ergebnis sieht so aus:
aaaa (5)
abbb (29)
bbbb (14)
cccc (8)
Die Reihenfolge ist cor rect, aber die Werte sind jetzt auch LowerCase.
würde ich dieses Ergebnis mag:
Aaaa (5)
abbb (29)
Bbbb (14)
Cccc (8)
Die meisten Beiträge mir hier erzählen eine copyField
zu schaffen, aber ich verstehe nicht, wie ich die beiden Felder kombinieren kann, wenn es um facetten Abfragen kommt.
Gibt es eine Möglichkeit, Facettenwerte nach Groß-/Kleinschreibung zu sortieren, während der ursprüngliche Wert bei der Abfrage beibehalten wird?
Erhalten Sie immer alle Facetteneinträge? I.e. Könnten Sie die Kundenseite sortieren? – MatsLindh
@MatsLindh Nein, bin ich nicht. Ich bin auf der Suche nach einem eleganten Weg, Solr das Sortieren zu überlassen. – Rob
Dann glaube ich nicht, dass Sie eine perfekte Lösung haben werden, wenn Sie nur die Facetten von Solr verwenden (es könnte möglich sein, etwas zusammen mit Streaming-Ausdrücken zu hacken). Payloads mit Facetting könnten das vielleicht lösen, aber das ist momentan noch nicht implementiert. Eine andere Möglichkeit ist, die Werte mit der unteren Form und einem Trennzeichen zu versehen (zB Index 'aaaa; Aaaa' und' bbbb; Bbbb ', dann durch dieses Trennzeichen in Ihrem Frontend splitten.Dies würde verschiedene Zählungen für verschiedene Gehäuse geben, aber das ist vielleicht kein Problem/könnte auf jeden Fall erwünscht sein .. – MatsLindh