MaxGubin

Рейтинг
27
Регистрация
18.10.2002
ppch:
А как обстоят дела с поиском в длинных постингах (т.н. Zig-Zag joins)? Можно ли считать "Self-Indexed Inverted Files" от Зобеля приемлимым на данный момент решением?
Или действовать как предлагают в "Building a Distributed Full-Text Index for the Web" - словарь в B-tree c mixed-list в базе данных (ИМХО как-то сомнительно что это эффективно).
Или это тоже уже не модная тема и все давно устарело? :)
Может чего присоветуете....
(В общем-то решая эту проблему я и наткнулся на эти BDB - Binary Decision Diagram)
Спасибо

Эти вещи не противоречат друг-другу. Я люблю использовать Б+ деревья, где для длинных пост-листов ограничения на размеры слота естественно образуют эти skip points Зобела, а поверх можно делать Zig-Zag joins. В статье "Building distr..." их проблема в Berkley-DB там не очень удачно реализованы деревья в случае слотов переменной длины, чем отчасти и обусловлены результаты.

ppch:

Вот натолкнуся на интересную статью:
http://www.sc2001.org/papers/pap.pap338.pdf
"Compressing Inverted Files in Scalable Information Systems by Binary Decision Diagram Encoding"

В данном подходе нет проблем - это один из алгоритмов сжатия пост-листов из сотни предложенных. Основные его недостатки - подходит только для пост-листов без положений, старый - сейчас есть более эффективные подходы.

Тема эта не очень модная - считается, что на современных машинах примитивное сжатие листов - дельта+байт-ориентированное кодирование, дает приемлемый результат в 99% случаев. Более сложные алгоритмы в большинстве случаев дают только проценты улучшения сжатия, а быстродействие начинает падать, да и не заплатит никто за эти сложности - мегабайты на hdd копейки стоят :).

Не буду вдаватьс в подробности, чтобы никому не было обидно:

1. Я согласен с Ильей, что на практике (особенно на относительно небольших коллекциях) разница в 100 раз крайне редко возникает, на самом деле может разы-порядки.

2. Я согласен с Леонидом, что при относительно большой коллекции и однословному запросу легко можно разогнать инвертированный файл в 100 раз по сравнению с не очень удачной реализацией поверх СУБД.

Насчет плотности Б-дерева - немного подкрутив алгоритм вставки/удаления можно держать ту плотность, какую хочешь, хоть все время 100%, только обновление будет тогда достаточно дорогое.

Пошел высоконаучный спор :). Леонид, ты немного не понял как они строят индекс, 50% для Б-дерева это теоретическая худшая плотность, реально всегда намного лучше.

Но в общем, я согласен (хотя Илья на самом деле этот тезис не опровергал), что использовать SQL общего назначения для организации инв. файла - все равно что пытаться минивен доделать до болида формулы 1. С другой стороны, я твердо уверен, что инвертированный индекс поверх B-дерева при правильной организации будет не менее эффективен, чем при "классическом" построении.

Да, это тексты документа. Это "хорошие" pdfы

Antony69:
Об этом стандарте пока не так много известно, получится ведь как в русской пословице:"Из огня, да в полымя!". PDF не так уж и плох, да и затраты на переход от этого стандарта будут велики.

Это, конечно, шутка. Но что надо знать о стандарте кроме спецификации, а она есть? Просто он разрабатывается на 10 лет позже PDF, там все предусмотрено для поддержки языков не на латинском алфавите и т.к. это XML, то индексатор для него делается минут за 20, в этом смысле, действительно, счастье.

Не знаю как у Яндекса, но я сам писал однажды индексатор PDF и могу сказать, что для русских документов, подготовленных стандартным дистиллятором в 90%, случаев извлечь текст невозможно. Точнее единственный способ - распознать его как графику, как делает FineReader у которого есть такой конвертор, но никто из поисковиков этого явно не делает. Я проверял как работает родной Adobe IFilter для MS IS - та же картина.

Почему это происходит рассказывать долго, но кратко потому, что это почти графический формат.

Теоретически в PDF можно заложить любые поля типа автор, ключевые слова и т.д, но опять же в реальных PDF этого не встречается.

Короче, ждем когда Metro убьет PDF и разработчикам документооборотов наступит счастье :).

Все замечательно, НО:

1. Ваш пример плохой работы "фразового поиск" показывает, что у Вас плохо реализована нормализация документов по длине. Это действительно проблема, но не смертельная и она не обязательно есть во всех других реализациях. Другого обоснования (хотя оно теоретически есть и известно каждому специалисту по IR) почему по короткой фразе трудно хорошо искать не приводится. Это почему?

2. Хорошо известно несколько алгоритмов нахождения "похожих" документов, хорошо бы на них сослаться и дать какое-то сравнение, один пример гугла как-то не убеждает, тем более что он достаточно искусственный. Я за 5 мин. могу для вас обратный соорудить :). Можете кратко сравнить?

Да, я это читал, когда-то давным-давно, но забыл. Им, конечно, виднее :). С точки зрения частичной пересмотройки, поиска фраз (о чем мы говорили), масштабируемости и устойчивости к потерям узлов кластера это решение не очень.

Как писал eshum

что делать если после обновления блок становится больше по размеру, переносить данные в новый?

Такая проблема есть в любой динамической индексной структуре. Простое и, обычно, хорошее решение предложил в 60-х г-н Bayer для листов Б-дерева.


Что касается глобального инвертированного индекса (когда инфомация о документе находится в разных индексных файлах), обновления еще более затруднительны если эти файлы находятся на разных машинах.

Честно не слышал о таком решении. Во всех известных мне вариантах кластерного решения информация об одном документе помещалась на одном узле. Это естественно вытекает из более простой реализации индексации и поиска.

12 3
Всего: 26