Сегодня занялся оценкой объемов, которые предстоит обрабатывать для
задуманного поиска по тексту с использованием пар лексем ... Боже,
храни FB.

У нас задумано два индекса

Первый используется для индексации описаний конкретных объектов (чел,
фирма, объект недвижимости (только его номер), паспорт (только номер),
адрес)

число проиндексированных объектов 2810457
  14786203 - это количество записей object<-->лексема

  38704791 - это, если юзать индексацию по двум лексемам
  26811726 - это по трем
  17725035 - по 4-м
  11435087 - по 5-и
   6708224 - по 6-и
   3419094 - по 7-и
   1476368 - по 8-и
    578780 - по 9-и
    213896 - по 10 лексемам.
[121859204] - это суммарный объем

И есть второй индекс. хранится в той же таблице, только относится к
другому (ROOT) объекту. ROOT-объектами являтся челы, фирмы, объекты
недвижимости. Его назначение - искать эти самые ROOT-объекты по
дочерним объектам (паспорт, адрес ...)

То есть формально, в описание чела засовывается описания всех его
паспортов и адресов. При поиске указываем в строке любые сведения о
челе - ФИО / паспорт / адрес и "без геммороя" находим конкретное рыло.

Здесь цифры, реально суровые

число ROOT-объектов: 1100403
  14786203 - это число совпадает с ранее указанным (те же самые
записи)

  92189456 - это по двум лексемам (!!!!!)
  78908823 - по 3
  66728521 - по 4
  55647816 - по 5
  45633758 - по 6
  36685466 - по 7
  28801051 - по 8
  21971676 - по 9
  16187129 - по 10
[457539899] - стоимость индекса до 10 лексем.

Вообщем, оно и понятно - описание ROOT-объекта весьма широкое и число
комбинаций резко подскакивает.

---------
Сейчас у нас держится только индекс без использования пар (14786203
записей) Число лексем - 700 тыс.

На десктопных машинах с гигом памяти обсчет статистики длится до
полутра часов. На сервере - 25-30 минут. Если добавить пары для ROOT-
ов (92189456) получаем (грубо) - 4 часа для обновления статистики.

На сервере уже решили перейти на 10ый рейд на 6 винтах. С пятого на
пяти. Это железо уже есть.

База сейчас 22 гига. На выходных буду на тестовой базе строить индекс
для ROOT-ов. Для 2х, максимум - 3x лексем 8-)
Для оценки числа пар и объема базы для этого добра.

Вот. Меня терзают смутные сомнения. Но лучше пока ничего придумать не
получается :(

Коваленко Дмитрий.

Ответить