LINUX.ORG.RU

Полнотекстовый поиск и кодирование Хаффмана

 , ,


0

3

Читал новость про Zim и вот у меня какие галлюцинации:

  1. можно разбивать сайт на страницы, для каждой страницы строить статическую таблицу хаффмана и сжимать.
  2. искать по сжатому таким образом можно не распаковывая, это снизит ввод-вывод и повысит скорость поиска.

То есть, надо взять поисковый запрос, пожать его по статической таблице Хаффмана в строку битов, и эту строку битов искать в сжатом бинарнике (блобе). В Intel много подходящих инструкций, можно многое распараллелить, так что процессор не должен стать узком местом, а скорость поиска должна возрасти (ценой энергозатрат, но кого это на десктопе волнует?)

Если что, китайцы такое уже придумали:
2008, Zhang Y & Pei Z. & Yang J. & Liang Y., Canonical Huffman code based full-text index, https://doi.org/10.1016/j.pnsc.2007.11.001
И евреи:
2005, Klein S.T. & Shapira D., Pattern matching in Huffman encoded texts, https://doi.org/10.1016/j.ipm.2003.08.008



Последнее исправление: Saakx (всего исправлений: 4)

Поиск по сайту обычно делается через ElasticSearch или что-то подобное, там индексы. Искать подстроку по всем страницам будет медленно, даже если ты сможешь

снизит ввод-вывод

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

грепом тоже ищут, у всех свои ниши

Saakx
() автор топика

Если что, китайцы такое уже придумали

Если что, в CHM файлах есть секция для поиска, так что MS такое уже придумала четверть века назад.

u-235
()
Ответ на: комментарий от u-235

Сжатие внутри CHM реализовано алгоритмом LZX (аналогичным используемому в CAB) для сжатия потоков внутри контейнера, а не явным кодированием Хаффмена для индекса поиска.

Saakx
() автор топика
Ответ на: комментарий от Saakx

Конечно оффтопик, это же не галлюцинации, а реально работающее решение, которое ищет именно в тексте странице. А ты будешь искать в тексте и разметке.

u-235
()
Ответ на: комментарий от u-235

Опять уводишь тему в сторону от идеи. Может я не буду искать не только в разметке, но и вообще. А кто-то другой запрограммирует анализ разметки и её игнорирование, на принцип кодирования по хаффмену это никак не повлияет.

Saakx
() автор топика

Чё переливать из пустого в порожнее, реализуешь - будет разговор.

unDEFER ★★★★★
()

если ради поиска, то к чему бить на страницы, строить Хаффман и собственные таблицы?

ищут ведь текст..а тексты бывают на естественных языках, то есть таблицы как минимум предопределённые или вообще trie. То есть оптимальнее строить полнотекстый индекс, он и компактный и искать по нему проще.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

То есть оптимальнее строить полнотекстый индекс, он и компактный и искать по нему проще.

А индексы ElasticSearch - это не то же самое?

blex ★★★★
()

Если что, китайцы такое уже придумали

И евреи:

Замечательно, теперь изучи статьи, которые на них ссылаются. Например, можно в Google Scholar вбить DOI и получить списки цитирующих работ. Возможно, там найдётся ответ, почему этот метод не стал популярен

annulen ★★★★★
()
Ответ на: комментарий от blex

но они отдельно т.е. отдельно лежит сжатый текст и отдельно к нему поисковый индекс.
тут как понял предлагается объединить поисковый индекс и индекс сжатия со словарем, теоритически оно таки близко.
но практически к словарю сжатия нет требований по 100% охвату всех последовательностей символов в тексте, а тут понадобится.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от pfg

и еще одно: ни в одном алгоритме сжатия полученный индекс не сохраняется в целевом файле. он там не нужен, при распаковке индекс заново наполняется.
и в сумме обстоятельств никаких плюсов от сжатия не получаешь, потому и не используют.

pfg ★★★★★
()
Ответ на: комментарий от blex

А индексы ElasticSearch - это не то же самое?

не исследовал как устроены индексы в ElasticSearch, но ТС вроде как сжимать тексты (страницы) хочет, просто не потеряв возможности поиска. То есть к поисковому/сжимающему индексу нужно ещё что-то. Навроде «вхождение индексов в текст».

Просто непосредственно сжатие по Хаффману совсем ни к чему. Оно конечно универсально, но тут частный случай - сжать размеченный текст, сохранив возможность и скорость поиска в нём

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.