Sortierung in lucene.net

8

Ich habe meinen Lucene-Index mit einem Feld, das sortiert werden muss. Ich habe meine Anfrage und ich kann mein Sort-Objekt machen. Wenn ich direkt vom Javadoc verstehe, sollte ich in der Lage sein, query.SetSort () zu tun. Aber es scheint keine solche Methode zu geben ...

Natürlich vermisse ich etwas Vitales. Irgendwelche Vorschläge?

    
Boris Callens 28.04.2009, 15:47
quelle

2 Antworten

11

Es gibt zwei wichtige Punkte. Zuerst muss das Feld indiziert werden. Zweitens, übergeben Sie das Objekt Sort in das überladene search Methode.

Als ich das letzte Mal nachgesehen habe, haben die Doktoren nicht sehr gut darauf hingewiesen, den Teil der Indexierung zu erwähnen, und haben sicherlich nicht erklärt, warum das so ist. Es brauchte etwas zu graben, um herauszufinden, warum.

Wenn ein Feld sortierbar ist, erstellt der Sucher ein Array mit einem Element für jedes Dokument im Index. Es verwendet Informationen aus dem Begriffsindex, um dieses Array aufzufüllen, damit es sehr schnell sortieren kann. Wenn Sie viele Dokumente haben, kann viel Speicher verwendet werden. Daher sollten Sie ein Feld nicht sortierbar machen, wenn dies nicht erforderlich ist.

Noch eine Einschränkung: Ein sortierbares Feld darf nicht mehr als einen Wert in jedem Feld enthalten. Wenn mehrere Werte vorhanden sind, weiß Lucene nicht, welchen Sortierschlüssel verwendet werden soll.

    
erickson 28.04.2009, 18:36
quelle
3

Es sieht so aus, als ob die gewünschte Methode z.B. Searcher.search (Abfrage abfragen, Filter filtern, int n, Sortieren sortieren) . setSort ist eine Methode von Sortieren .

    
Matthew Flaschen 28.04.2009 16:01
quelle

Tags und Links