2016-11-02 5 views
0

Ich habe ein solr-Textfeld wie folgt.Ergebnisse in alphabetischer Reihenfolge sortieren mit type = text

Und wenn Sie die Ergebnisse wie folgt sortieren, werden die Ergebnisse nicht in alphabetischer Reihenfolge angezeigt.

http://localhost:8983/solr/news/select?fl=news_headline_ln_en&indent=on&q=*:*&rows=100&sort=news_headline_ln_en%20desc&start=0&wt=json 

Ergebnis Antwort:

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":45, 
    "params":{ 
     "q":"*:*", 
     "indent":"on", 
     "fl":"news_headline_ln_en", 
     "start":"11610", 
     "sort":"news_headline_ln_en asc", 
     "rows":"12021", 
     "wt":"json", 
     "_":"1478085256196"}}, 
    "response":{"numFound":12621,"start":11610,"docs":[ 
     { 
     "news_headline_ln_en":"Eleven stocks up despite UAE markets decline"}, 
     { 
     "news_headline_ln_en":"\nOil Prices Decline on Fed Rate Rise Jitters"}, 
     { 
     "news_headline_ln_en":"Euro unemployment rate declines in February"}, 
     { 
     "news_headline_ln_en":"Investors Holding’s Q4 profits decrease"}, 
     { 
     "news_headline_ln_en":"DED honors ‘On Time’ in Oud Metha for excellence"}, 
     { 
     "news_headline_ln_en":"\nTreasures From The Deep -- WSJ"}, 
     { 
     "news_headline_ln_en":"Tunisia shares deepen early losses"}, 
     { 
     "news_headline_ln_en":"EGX deepens losses in week"}, 
     { 

Wie Sie sehen es nicht alphabetisch sortiert wird. Jeder kennt einen möglichen Grund? Schätze jede Hilfe.

Antwort

1

Sie können nicht. text_en ist nicht zum Sortieren geeignet, da es die Eingabe in Tokens zerlegt und den Text in separate Tokens aufteilt. Diese Token können nicht zum Sortieren verwendet werden.

Die Lösung is to add a copyField instruction, dass Kopien der Inhalt aus dem text_en Feld über ein Feld, dass ist geeignet für die Sortierung, wie ein string Feld oder ein Textfeld mit einem KeywordTokenizer (mit dem Sie die Zeichenfolge in Kleinbuchstabe erlaubt, aber behalte es als ein einzelnes Token - wenn du willst, dass die Sortierung die Groß-/Kleinschreibung nicht beachtet. Wenn Sie ein Zeichenfolgenfeld verwenden, müssen Sie das Feld klein schreiben, bevor Sie es selbst indizieren, wenn bei der Sortierung zwischen Groß- und Kleinschreibung unterschieden werden soll.

<copyField source="news_headline_ln_en" dest="news_headline_ln_en_sort" /> 

.. und dann sort=text_sort verwenden zum Sortieren. Sie können die Einstellung maxChars verwenden, wenn Sie nur den Anfang der ursprünglichen Zeichenfolge kopieren müssen (wenn Sie beispielsweise nach dem Anfang eines Artikels sortieren, benötigen Sie wahrscheinlich nur die ersten 20-40 Zeichen des Artikels für die Sortierung nützlich sein).

Siehe auch defining fields und Schema API.

+0

Ich versuchte mit Ihrem Ansatz. Aber dann heißt es 'kann nicht auf mehrwertig Feld sortieren: news_headline_ln_en_sort "'Hier ist der Code, den ich verwendet, ' \t ' – Channa

+0

das Feld Set nicht mehrwertig werden:' mehrwertig = "false" '. – MatsLindh

Verwandte Themen