Сортировка в lucene.net - PullRequest
       25

Сортировка в lucene.net

8 голосов
/ 28 апреля 2009

Я получил свой индекс Lucene с полем, по которому нужно отсортировать. У меня есть запрос, и я могу сделать свой объект сортировки. Если я правильно понял из javadoc, я должен быть в состоянии сделать query.SetSort (). Но, похоже, такого метода не существует ...

Конечно, мне не хватает чего-то жизненно важного. Есть предложения?

Ответы [ 2 ]

11 голосов
/ 28 апреля 2009

На самом деле есть два важных момента. Во-первых, поле должно быть проиндексировано. Во-вторых, передайте объект Sort в перегруженный метод search.

В прошлый раз, когда я смотрел, документы не очень хорошо указывали на часть индексации и, конечно, не объясняли, почему это так. Потребовалось немного покопаться, чтобы выяснить, почему.

Когда поле сортируется, поисковик создает массив с одним элементом для каждого документа в индексе. Он использует информацию из индекса index для заполнения этого массива, чтобы он мог выполнять сортировку очень быстро. Если у вас много документов, он может использовать много памяти, поэтому не делайте поле сортируемым, если в этом нет необходимости.

Еще одно предупреждение: сортируемое поле должно содержать не более одного значения, сохраненного в каждом поле. Если существует несколько значений, Lucene не знает, какой из них использовать в качестве ключа сортировки.

3 голосов
/ 28 апреля 2009

Похоже, что фактический метод, который вы хотите, например, Searcher.search (Запрос, фильтр, int, сортировка) . setSort - это метод Sort .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...