ASP.NET Lucene Улучшения производительности вопрос - PullRequest
0 голосов
/ 09 апреля 2010

Я закодировал сайт ASP.NET и работает на win'08 (удаленно). Приложение запрашивает 11 очень больших индексов Lucene (каждый ~ 100 ГБ). Я открываю IndexSearchers для Page_load () и оставляю их открытыми на время сеанса пользователя.

Мои вопросы:

  1. Выполнение запросов занимает ~ 5 секунд - понятно, что это очень большие индексы - но пользователи хотят более быстрых ответов. Мне было любопытно выжать лучшую производительность. (Я просмотрел сайт Apache Lucene и попробовал некоторые идеи там). Интересно, если и как вы доработали это, особенно с точки зрения asp.net.

  2. Одна идея заключалась в том, чтобы использовать Solr вместо непосредственного запроса Lucene. Но это кажется нелогичным, вводит другую абстракцию между ними и может увеличить задержку. Стоит ли головной боли при портировании на Solr? Может кто-нибудь поделиться какими-то показателями того, какое улучшение вы получили после перехода на Solr, если оно того стоило.

  3. Есть ли какие-нибудь ключевые вещи, которые можно было бы сделать в Solr, которые можно было бы воспроизвести для ускорения времени отклика?

Ответы [ 2 ]

1 голос
/ 09 апреля 2010

Некоторые вопросы / идеи:

  • Вы нажимаете все 11 индексов для одного запроса?
  • Можете ли вы реорганизовать индексы так, чтобы вы нажали только 1 индекс (т. Е. Разметку)?
  • Запускали ли вы профиль приложения (используя dotTrace или аналогичный инструмент)? Где время проведено? Lucene.Net?
  • Если большая часть времени тратится на Lucene.Net, то при переходе на Solr задержка должна быть незначительной (по сравнению с оставшейся частью потраченного времени). Кроме того, Solr может быть легко распределен для повышения производительности.
  • Я не слишком хорошо знаком с Lucene (я использую Solr), но если вы ищете 11 индексов для каждого запроса, можете ли вы выполнить этот поиск параллельно (например, с TPL )?
0 голосов
/ 09 апреля 2010

Самое важное - это удалить поиск с веб-уровня и изолировать его от своего собственного уровня (уровня поиска). Таким образом, у вас есть выделенный ящик с выделенными ресурсами, в которых индексы загружены и «подогреты» в кеше, вместо того, чтобы каждый пользователь имел копию своего собственного устройства чтения индекса.

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