Нужно общее описание, без деталей про морфологию, нечеткий поиск и т.п. Грубо говоря, нашли все слова, которые используются в тексте (или в бд), отсортировали по алфавиту (можно попробовать для ускорения превратить в короткий DWORD хэш), и к каждому слову приписали список мест, где оно используется: в простейшем случае - смещение от начала файла. Но при таком раскладе получется, что размер индекса равен количеству слов, а у меня около 9 миллионов записей по 7-8 слов, и получается, что размер этого индекса будет в районе 250-300 мегабайт, а это как-то слишком много получается. Есть ли какие-то техники, чтобы сократить объем такого индекса?
Встречался с примерно похожей проблемой. Имхо, придется терять скорость доступа, иначе никак. Например, разбить текст на 2^8 или 2^16 "зон" или "регионов", для каждого слова хранить номера этих "регионов", а внутри этих "регионов" - поиском.
Хреново. Особенно, если не текст, а справочник какой-нибудь, он ведь и так уже разбит дальше некуда. Но вообще спасибо за мысль, что-то в этом есть. доп. хотя почему хреново. в целом приемлемо. нужно поделить общее число записей на 65536 и можно будет сделать смещение уже в двухбайтовом формате. вроде понял.
provocateur Ага. Есть. Можно выложить эти 9 млн записей в место доступное для индексации гуглом, и потом отправлять запрос в гугл. Глупо и неумно, но работает и не требует места на диске.