I just skimmed your message, but Lucene provides for multiple sorts. You can construct a Sort object from an arbitrary number of fields, and any documents that all sort equally for fields 1..k will be resolved by considering field k+1.
The performance impact when searching is mostly upon the very first sort when the caches are filled. If you have a HUGE number of unique values for a sort field, that may have heavy memory demands. As I said, I just skimmed your message, so if I'm off base let me know... HTH Erick On Tue, May 18, 2010 at 12:01 PM, Dragan Jotanovic < dragan.jotano...@diosphere.com> wrote: > |Hi, I need to sort results by two fields. First one is numeric and sorting > should be in ascending order. > Second one should be ordered in a "levels" structure. > Here is the example: > > Unsorted: > DocId SortFieldA SortFieldB > 1 101A > 2 102 B > 3 102 A | > | 4 101 C > || 5 102 B| > | 6 101 A | > | 7 101 B| > | 8 101 C| > | 9 101 B| > | 10 101 A| > > > > Sorted: > |DocId SortFieldA SortFieldB > 1 101A | > | 7 101 B| > | 4 101 C| > | 6 101 A| > | 9 101 B| > | 8 101 C| > | 10 101 A| > | ||3 102 A||||| > | 2 102 B|| > || 5 102 B|||| > > First, all results are ordered by SortFieldA in ascending order. Than by > SortFieldB so that all documents with the same SortFieldA value are ordered > in "levels" structure. Each level consists of documents with distinct > SortFieldB values. > So, the requirenment is to show documents from first level first, than > second level, and so on. > It will not be possible to order documents while indexing, so I will need > search time ordering. > Is this achievable with lucene? What would be the best approach to solve > this without huge performance impact on multimillion documents index? > | > >