<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D0%BC%D0%BD%D1%8B%D0%B5_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D1%81%D1%82%D1%80%D0%BE%D0%BA_%D0%B2_ClickHouse</id>
	<title>Умные алгоритмы обработки строк в ClickHouse - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D0%BC%D0%BD%D1%8B%D0%B5_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D1%81%D1%82%D1%80%D0%BE%D0%BA_%D0%B2_ClickHouse"/>
	<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%A3%D0%BC%D0%BD%D1%8B%D0%B5_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D1%81%D1%82%D1%80%D0%BE%D0%BA_%D0%B2_ClickHouse&amp;action=history"/>
	<updated>2026-06-06T16:01:09Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wikicshse.ru/index.php?title=%D0%A3%D0%BC%D0%BD%D1%8B%D0%B5_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D1%81%D1%82%D1%80%D0%BE%D0%BA_%D0%B2_ClickHouse&amp;diff=1018&amp;oldid=prev</id>
		<title>imported&gt;Aapoludnitsin: Новая страница: «{{Карточка_командного_проекта |name=Умные алгоритмы обработки строк в ClickHouse |company=Яндекс |seme…»</title>
		<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%A3%D0%BC%D0%BD%D1%8B%D0%B5_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D1%81%D1%82%D1%80%D0%BE%D0%BA_%D0%B2_ClickHouse&amp;diff=1018&amp;oldid=prev"/>
		<updated>2018-10-15T11:54:39Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{Карточка_командного_проекта |name=Умные алгоритмы обработки строк в ClickHouse |company=Яндекс |seme…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Карточка_командного_проекта&lt;br /&gt;
|name=Умные алгоритмы обработки строк в ClickHouse&lt;br /&gt;
|company=Яндекс&lt;br /&gt;
|semester=Осень 2018&lt;br /&gt;
|course=3-4&lt;br /&gt;
|number_of_students=?&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ClickHouse как правило используется в сценариях, когда построение полноценного обратного индекса для текстового поиска, нецелесообразно. Это - большое количество мелких строк. В этом случае, объём полноценного индекса может быть больше объёма исходных данных, и в случаях, когда объём данных существенно превышает объём оперативки, его поддержка становится непрактичной.&lt;br /&gt;
&lt;br /&gt;
Не смотря не это, ClickHouse часто используется в сценариях, предполагающих поиск по тексту. Например, для этого в ClickHouse реализован эффективный (brute-force) поиск подстроки в строке. Но многих алгоритмов не хватает.&lt;br /&gt;
&lt;br /&gt;
1. Для начала, сделаем эффективную проверку наличия любой из (явно заданного) множества подстрок. Как вы уже знаете, для этого есть такие алгоритмы как Aho-Corasick, Rabin-Karp. Но мы попробуем сделать кое что ещё лучше, и использовать алгоритм multi-Volnitsky, который ещё никто не реализовывал.&lt;br /&gt;
&lt;br /&gt;
2. Для brute-force поиска подстроки в строке, нужно по крайней мере прочитать те строки (haystack), в которых мы хотим искать. А можно ли сделать какую-нибудь выжимку из haystack, чтобы проверять гипотезу наличия подстроки быстрее? Мы попробуем добавить в ClickHouse функцию, которая построит для строки триграмный bloom filter. Полученную выжимку можно будет записать в отдельный столбец, чтобы быстрее его сканировать, и исключать сканирование исходных строк в большинстве случаев. А может быть, вы сможете придумать трюки с суффиксными массивами.&lt;br /&gt;
&lt;br /&gt;
3. Для одной из задач нам нужно locality-sensitive хэширование строк. Это такая хэш-функция, которая при небольших изменениях аргумента, как правило, не меняется. Для этого реализуем хорошо оптимизированный алгоритм min-hash. https://en.wikipedia.org/wiki/MinHash&lt;/div&gt;</summary>
		<author><name>imported&gt;Aapoludnitsin</name></author>
	</entry>
</feed>