Lucene поиск, принимая TOOO долго - PullRequest
3 голосов
/ 04 июня 2010

Я использую Lucene.net (2.9.2.2) для (в настоящее время) индекса 70Gig. Я могу выполнить довольно сложный поиск и вернуть все идентификаторы документа через 1 ~ 2 секунды. Но для фактической загрузки все обращения (около 700 тысяч в моих тестовых запросах) занимают 5+ минут.

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

Мой вопрос: как лучше всего получить все документы в результатах поиска? в настоящее время я использую пользовательский коллектор, который получает документ (с MapFieldSelector) в качестве его сбора ... Я также пытался перебирать список после завершения сбора ... но это было еще хуже.

Я открыт для идей: -).

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 06 июня 2010

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

0 голосов
/ 04 июня 2010

Хммм, учитывая, что вы обнаружили проблемы, когда ваш код "get" был перемещен за пределы коллектора, похоже, что ваша проблема связана с вводом / выводом.

Я почти боюсь спросить это, учитывая размер вашего индекса, но вы пробовали:

  • Оптимизация индекса
  • Дефрагментация вашего жесткого диска

Если да, было ли заметное влияние на скорость получения документов? Кстати, я получаю 2333 предметов / секунду, если мои шаткие математики верны ...

Кроме того, для поднабора полей, которые вы извлекаете, поддаются ли какие-либо из них сжатию? Или вы уже экспериментировали со сжатием?

В связи с этим, какую долю вашего индекса составляют 700 тысяч позиций? Было бы интересно почувствовать пропускную способность ввода / вывода. Вероятно, вы могли бы определить максимальную теоретическую скорость передачи данных для комбинации вашего компьютера и жесткого диска и посмотреть, приблизились ли вы к пределу.

...