Как хранят индекс для полнотекстового поиска?

Тема в разделе "WASM.A&O", создана пользователем provocateur, 13 авг 2011.

  1. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Нужно общее описание, без деталей про морфологию, нечеткий поиск и т.п.
    Грубо говоря, нашли все слова, которые используются в тексте (или в бд), отсортировали по алфавиту (можно попробовать для ускорения превратить в короткий DWORD хэш), и к каждому слову приписали список мест, где оно используется: в простейшем случае - смещение от начала файла.
    Но при таком раскладе получется, что размер индекса равен количеству слов, а у меня около 9 миллионов записей по 7-8 слов, и получается, что размер этого индекса будет в районе 250-300 мегабайт, а это как-то слишком много получается. Есть ли какие-то техники, чтобы сократить объем такого индекса?
     
  2. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Встречался с примерно похожей проблемой.
    Имхо, придется терять скорость доступа, иначе никак. Например, разбить текст на 2^8 или 2^16 "зон" или "регионов", для каждого слова хранить номера этих "регионов", а внутри этих "регионов" - поиском.
     
  3. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Хреново. Особенно, если не текст, а справочник какой-нибудь, он ведь и так уже разбит дальше некуда. Но вообще спасибо за мысль, что-то в этом есть.

    доп.
    хотя почему хреново. в целом приемлемо. нужно поделить общее число записей на 65536 и можно будет сделать смещение уже в двухбайтовом формате. вроде понял.
     
  4. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    provocateur
    Ага. Есть. Можно выложить эти 9 млн записей в место доступное для индексации гуглом, и потом отправлять запрос в гугл. ;)
    Глупо и неумно, но работает и не требует места на диске.
     
  5. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Не-не-не, такие данные я гуглу отдавать не хочу :)