Фильтрация результатов отсортированного запроса в Lucene.NET - PullRequest
1 голос
/ 21 июня 2011

Я использую Lucene.NET, которая в настоящее время обновляется до Lucene 2.9.Я пытаюсь реализовать что-то особенное, но без необходимости углубляться в какие-либо группы.Я знаю, что в Lucene 3.2 есть многогранный поиск, который может решить эту проблему, но у меня пока нет времени перенести его на 2.9.

Я фигурирую в любом случае, когда вы выполняете постраничный запрос с сортировкойОператор Lucene должен найти все документы, соответствующие запросу, отсортировать их, а затем взять верхние N результатов, где N - размер страницы.Я хотел бы создать что-то, что также будет применено после того, как отсортированный запрос будет завершен, но примет верхние N уникальных результатов и вернет их.Я думаю об использовании HashSet и одного из проиндексированных полей для определения уникальности.Я предпочел бы найти способ расширить что-то в Lucene, чем пытаться сделать это после того, как результаты уже возвращены по соображениям производительности.

Кажется, что пользовательские фильтры работают до того, как основной запрос будет применен, а пользовательские коллекторы будут запущены досортировка применяется, если вы не сортируете по идентификатору документа Lucene.Так каков наилучший подход к этой проблеме?Точка в направлении правильного компонента для расширения даст вам ответ на этот вопрос, пример реализации определенно даст вам ответ.Заранее спасибо

1 Ответ

0 голосов
/ 21 июня 2011

Я бы сделал поиск без сортировки, а в пользовательском сборщике собрал бы результаты в отсортированный список размера N на основе «уникальности»

...