Делаю свою буру и не понимаю, как сделать теги. Хочу за O(1) отвечать на вопрос вида "какие ID у картинок с тегами t1,...,tn, но без тегов e1,...,en, на странице с оффсетом 12000?" Ну или формально доказать, что я обнаглел и это невозможно. Как вы это делаете?
> какие ID у картинок с тегами t1,...,tn, но без тегов e1,...,en Создаешь инвертированный индекс, где к каждому тегу привязана кишка с айдишниками соответствующих документов. Итерируешься по одной из кишок (ты можешь выбрать самую короткую), получаешь сложность O(длина кишки). Так делается в больших нагруженных поисковых системах. > на странице с оффсетом 12000 Добавляешь еще один тег (поисковый литерал), означающий номер страницы. Возможно, на маленькой буре можно сделать что-то более быстрое по времени, но за счет большего потребления памяти. Я не уверен, что это на самом деле нужно.
О, а мысль протегировать страницы мне не приходила в голову.
>>25954 Разве такое не должно быть уже решено в СУБД? Но гляньте https://roaringbitmap.org/ Если в кратце, для каждого тэга храним сжатый битовый массив, для выполнения запроса and-аем чанки этих массивов между собой, делая popcnt по результату, пока не достигнем нужный offset.
Моя бура состоит из двух TSV текстовых файлов вида тэг|хэш и хэш|путь-к-файлу, которые я грепаю скритом. What is O(1), is it tasty
- wahaba + wakaba 3.0.9 + futaba + futallaby -