вопрос про inverted index
Раз ты смог посчитать размер, может быть можешь сказать, сколько документов, средняя длина документа, количество разных слов?
Наверняка человечество как-то продвинулось в этом вопросе.я бы попробовал sphinx
по порядку разных слов 100 миллионов, каждое слово в среднем в 3000 документах, но распределение неровное - много слов содержатся только в одном документе, некоторые слова в миллионе. Чаще будут искать популярные слова. Всего документов миллиард, по 300 слов в среднем
выражение поиска чаще всего содержит десятки keywords, условно говоря до 100, но иногда бывает немного больше.
выражение поиска чаще всего содержит десятки keywords, условно говоря до 100, но иногда бывает немного больше.
Оставить комментарий
ark21
есть задача, чем-то похожая на searchДетали излагать не могу, но попробую перефразировать в терминологии поиска
из большого числа документов быстро (секунды) выбрать 10 любых, которые удовлетворяют условию, например такому
(keyword1 or keyword2 or keyword3) and (keyword4 or keyword5 or keyword6)
Насколько я понимаю, такие задачи решаются построением inverted index
keyword => document ids
Если каждый список document ids отсортирован, то можно параллельно читать 6 списков, искать на ходу пересечение, и как только нашли 10 - остановиться. При этом нужно использовать компрессию, чтобы считывать меньше данных в среднем
Если делать так, то с компрессией полный размер индекса будет около 600GB, и вроде машин для этого понадобится больше одной.
Собственно вопрос в том, какие технологии использовать, чтобы облегчить себе жизнь и не писать это с нуля. Наверняка человечество как-то продвинулось в этом вопросе.
upd. речь именно про использование уже построенного индекса