Lucene.NET результат использования sql как LIMIT? + 1к вопрос - PullRequest
1 голос
/ 22 сентября 2010

Я согласен с этим ответом и мне это нравится, но я действительно предпочел бы, чтобы это было решено до выхода в эфир.Поэтому я начинаю вознаграждение в надежде, что моя задница не будет укушена позже;).


С Lucene .NET 2.9.x любая версия, использующая .NET.Как я могу искать и ограничивать / публиковать результаты, похожие на ключевое слово limit в SQLite и MySql?Я хотел бы найти 20 лучших документов, которые имеют слово «Apple» и ссылку на страницу 20, в которой возвращаются 20 результатов, игнорируя первые 400 документов с более высоким баллом.Должен ли я реализовать это таким образом (кредит идет на ответ Паскаля Димассимо ниже)


1k Вопрос

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

Я также хочу упомянуть Эдвард Тангей , который в течение долгого времени задавал большинство вопросов и, что более важно, задавал замечательных вопросов со многими ответами.Я бью, чтобы получить мое качество так же высоко, как его.Я также хочу упомянуть этих ребят, которые также задают много вопросов. ооо , твердосплавное зубчатое колесо , Маси , Бланкмен

Ответы [ 2 ]

3 голосов
/ 22 сентября 2010

Метод поиска класса Searcher имеет параметр для ограничения числа результатов, возвращаемых для запроса.

Query query = parser.parse("Apple");
TopDocs topDocs = searcher.search(query, 20);

Но Lucene не поддерживает разбиение на страницы.Вам придется повторить ваш запрос и сохранить результаты, которые соответствуют диапазону, который вам нужен.

См. вопрос .

1 голос
/ 02 октября 2010

Searcher.search, который вы используете во второй строке, также имеет подпись:

Search(Query query, Filter filter, HitCollector results)

Используйте HitCollector для сброса временного результата в быстрое и временное хранилище. Например, если пользователь спрашивает первые 20 - вам нужно вернуть его и в фоновом потоке начать кэшировать все другое. На самом деле вам нужно хранить только идентификатор документа, поэтому для результата в 1 миллион ожидается примерно 4Mb.

Когда результат находится в хранилище, поддержка пейджинга просто.

...