2016-07-15 18 views
0

Ich habe ein Problem - es benötigt, um SOLR Ergebnisse in alphabetischer Reihenfolge sortiert, wenn es sowohl Groß-und Kleinbuchstaben als Antwort gibt. Jetzt ,Solr in der richtigen alphabetischen Reihenfolge sortieren

<field name="somefield" type="text_general" indexed="true" stored="true"/> 

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
    <!-- in this example, we will only use synonyms at query time 
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
    --> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

ich mit leicht smth wie diese

aaa 
AAA 
BBB 
bbb 
BBB 
DDD 
ddd 

bekommen kann, wie es keine Priorität zwischen Groß- und Kleinbuchstabe ist.

Aber es ist wie diese zu erhalten, benötigt:

aaa 
AAA 
bbb 
BBB 
BBB 
ddd 
DDD 

Wie so zu tun Sortierung richtig?

+0

Welche Version verwenden Sie? Ich habe versucht, Ihr Problem mit Solr 5.4.1 zu reproduzieren, aber wenn ich Solr befehle, nach diesem Textfeld zu sortieren, werden die Dokumente in der richtigen Reihenfolge sortiert. – cuh

+0

@cuh Danke. Ich benutze 5.4.0. Erzielen Sie genau die gewünschten Ergebnisse? Können Sie Ihre Konfiguration von Feld und Typ angeben? – alexloiko

+0

@cuh Weil ich versuche zur Zeit an einem neuen Kern für Feld title_t (text_general) und erhielt solche Ergebnisse/Werfen Sie einen Blick auf ddd und DDD Abschnitt '{ "title_t": "AAA" }, { "title_t" : "aaa" }, { "title_t": "aaa" }, { "title_t": "BBB" }, { "title_t": "ddd" }, { " title_t ":" DDD " }, { " title_t ":" ddd " } ' – alexloiko

Antwort

1

In 99% der Fälle möchten Sie nicht nach dem Token-Feld sortieren. Denn wenn du 5 Tokens hast, nach welchen sortiert du?

Wenn Sie jedoch Kleinbuchstaben eingeben möchten, könnte es ein Token-Feld sein, nur mit KeywordTokenizer und Kleinbuchstabenfilter. Auf diese Weise erhalten Sie immer einen Token und es ist kleingeschrieben. Verwenden Sie copyField aus dem ursprünglichen Feld, wenn Sie das ursprüngliche Feld immer noch mit Synonymen usw. durchsuchen möchten. Sie müssen die Kopie nicht speichern, da die Sortierung nur die indizierte Darstellung verwendet.

Auch docValues ​​sind gut zum Sortieren.

Verwandte Themen