Pull to refresh

Создаём личный «Архив интернета»

Reading time7 min
Views25K


Как показала история, сеть из миллиардов связанных между собой документов — очень хрупкая и эфемерная система. Странички живут недолго. Если нашли интересную страницу, сайт или видео — нельзя просто сделать закладку и надеяться, что контент по ссылке останется доступен в будущем. Не останется. Информация исчезнет, ссылки изменятся, домены сменят владельцев, статьи на Хабре спрячут в черновики. У каждой страницы свой срок жизни. Ничто не вечно под луной, и ничего с этим не поделать.

К счастью, у нас есть инструменты, чтобы сохранить информацию на десятилетия. Свой персональный архив, полностью под контролем, со всеми сайтами и актуальными страницами. Отсюда никто ничего не удалит без вашего ведома, никогда.
Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments44

Как устроено индексирование баз данных

Level of difficultyEasy
Reading time12 min
Views74K

Индексирование баз данных — это техника, повышающая скорость и эффективность запросов к базе данных. Она создаёт отдельную структуру данных, сопоставляющую значения в одном или нескольких столбцах таблицы с соответствующими местоположениями на физическом накопителе, что позволяет базе данных быстро находить строки по конкретному запросу без необходимости сканирования всей таблицы. Применяются разные типы индексов, однако они занимают пространство и должны обновляться при изменении данных. Важно тщательно продумывать стратегию индексирования базы данных и регулярно её оптимизировать.
Читать дальше →
Total votes 68: ↑66 and ↓2+64
Comments9

Как Яндекс научил искусственный интеллект понимать смысл документов

Reading time10 min
Views78K
Сегодня мы расскажем о новой поисковой технологии «Королёв», которая включает в себя не только более глубокое применение нейронных сетей для поиска по смыслу, а не по словам, но и значительные изменения в архитектуре самого индекса.



Но зачем вообще понадобились технологии из области искусственного интеллекта, если еще лет двадцать назад мы прекрасно находили в поиске искомое? Чем «Королёв» отличается от прошлогоднего алгоритма «Палех», где также использовались нейронные сети? И как архитектура индекса влияет на качество ранжирования? Специально для читателей Хабра мы ответим на все эти вопросы. И начнем с самого начала.

Читать дальше →
Total votes 145: ↑140 and ↓5+135
Comments405

Что должен знать о поиске каждый разработчик

Reading time18 min
Views25K

Хотите внедрить или доработать функцию поиска? Вам сюда.



Спросите разработчика: «Как бы вы реализовали функцию поиска в своем продукте?» или «Как создать поисковую систему?». Вероятно, в ответ вы услышите что-нибудь такое: «Ну, мы просто запустим кластер Elasticsearch: с поиском сегодня всё просто».

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

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

Цель статьи


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

Основываясь на опыте работы с универсальными решениями и узкоспециализированными проектами самого разного масштаба (в компаниях Google, Airbnb и нескольких стартапах), я расскажу о некоторых популярных подходах, алгоритмах, методах и инструментах.

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

Переведено в Alconost
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments0

Postgres в ретроспективе

Reading time37 min
Views9.8K
Предлагаем вашему вниманию перевод статьи Джозефа Хеллерштейна «Looking Back at Postgres», опубликованной в соответствии с международной лицензией Creative Commons «С указанием авторства» версии 4.0 (CC-BY 4.0). Авторы оставляют за собой право распространять эту работу на личных и корпоративных веб-сайтах с надлежащей ссылкой на источник.

Перевод выполнен Еленой Индрупской. От себя добавлю, что «программист, который отчаянно хотел построить систему с многоверсионностью» — судя по всему, Вадим Михеев, ну а «добровольцев из России», переписавших GiST, мы все хорошо знаем.

Аннотация


Это воспоминание о проекте Postgres, выполняемом в Калифорнийском университете в Беркли и возглавляемом Майком Стоунбрейкером (Mike Stonebraker) с середины 1980-х до середины 1990-х годов. В качестве одного из многих личных и исторических воспоминаний, эта статья была запрошена для книги [Bro19], посвященной награждению Стоунбрейкера премией Тьюринга. Поэтому в центре внимания статьи — руководящая роль Стоунбрейкера и его мысли о дизайне. Но Стоунбрейкер никогда не был программистом и не мешал своей команде разработчиков. Кодовая база Postgres была работой команды блестящих студентов и эпизодически—штатных университетских программистов, которые имели немного больше опыта (и только немного большую зарплату), чем студенты. Мне посчастливилось присоединиться к этой команде в качестве студента в последние годы проекта. Я получил полезный материал для этой статьи от некоторых более старших студентов, занятых в проекте, но любые ошибки или упущения являются моими. Если вы заметили какие-либо из них, пожалуйста, свяжитесь со мной, и я постараюсь их исправить.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments1

Как мы в IntelliJ IDEA ищем лямбда-выражения

Reading time10 min
Views13K

Type Hierarchy в IntelliJ IDEAВажной возможностью любой IDE является поиск и навигация по коду. Один из часто используемых вариантов поиска на языке Java — поиск всех реализаций данного интерфейса. Часто такая функция называется иерархией типов (Type Hierarchy) и выглядит как на картинке справа.


Перебирать все классы проекта при вызове этой функции — неэффективно. Можно сохранить в индекс полную иерархию классов во время компиляции, так как компилятор все равно ее строит. Мы это делаем, если компиляция запускается самой IDE, а не делегируется, например, в Gradle. Но это работает, только если после компиляции в модуле ничего не менялось. А в общем случае исходники — самый актуальный источник информации, и индексы строятся по исходникам.


Поиск непосредственных наследников — несложная задача, если мы не имеем дело с функциональным интерфейсом. При поиске реализаций интерфейса Foo надо найти все классы, где есть implements Foo, и интерфейсы, где есть extends Foo, а также анонимные классы вида new Foo(...) {...}. Для этого достаточно заранее построить синтаксическое дерево каждого файла проекта, найти соответствующие конструкции и добавить их в индекс.

Читать дальше →
Total votes 62: ↑59 and ↓3+56
Comments9

Microsoft запатентовала «видеобраузер»

Reading time1 min
Views634
Заявка на патент США № 20060120624 описывает технологию, которая способна автоматически составить «содержание» любого видеофильма и вывести его на экран в графическом виде.
Читать дальше →
Total votes 1: ↑1 and ↓0+1
Comments4

Индексирование и поиск с помощью Xapian в .NET

Reading time3 min
Views4.1K
Если слово Xapian вам незнакомо, рекомендую ознакомиться с небольшой статьей.
Вкратце же, Xapian — представляет собой написанный на с++ набор инструментов для индексирования текстовой информации, с возможностью поиска по базе индексированной информации. Для работы не требует установленного сервера, достаточно наличия его библиотек. Может обрабатывать огромные массивы информации(проверено до 1.5Тб), измеряемой миллионами документов. Является конкурирующим продуктом Sphinx и Apache Lucene.
Мной он был выбран из этих трех продуктов за возможность использования из .Net.

Пробуем
Total votes 36: ↑30 and ↓6+24
Comments31

Индексирование приложений: теперь и на русском языке

Reading time1 min
Views5K
Уровень подготовки веб-мастера: средний

В декабре прошлого года мы объявили о начале тестирования возможности индексирования мобильных приложений в Поиске Google. Уже в апреле этого года мы стали отображать ссылки на мобильные приложения в результатах Поиска на Android-устройствах англоязычных пользователей по всему миру. Начиная с сегодняшнего дня, увидеть в выдаче Поиска прямые ссылки на приложения и решить, переходить ли на мобильную версию сайта или просмотреть контент сразу в Android-приложении, смогут пользователи из России и ещё нескольких стран. Мы добавляем в результаты первых создателей контента на других языках: Fairfax Domain, MercadoLibre, Letras.Mus.br, Vagalume, Idealo, L'Equipe, Player.fm, Upcoming, Au Feminin, Marmiton и chip.de. В США мы также начинаем поддерживать еще несколько приложений — Walmart, Tapatalk и Fancy.

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

Рекомендации по индексированию приложений

Хотите, чтобы у вас тоже так работало?
Total votes 10: ↑8 and ↓2+6
Comments0

Совершенствуем понимание веб-страниц

Reading time2 min
Views24K
Уровень подготовки веб-мастера: для всех

В 1998 году, когда все наши серверы умещались в гараже Сьюзан Войчицки (Susan Wojcicki), мало кто задумывался о том, как JavaScript или CSS взаимодействуют с поисковым роботом: эти технологии применялись нечасто. Разве что создатели некоторых страниц с помощью JavaScript заставляли элементы оформления… мигать. Однако с тех пор многое изменилось. Сейчас в Интернете можно найти множество красочных сайтов с интерактивным дизайном, на которых широко используется JavaScript. И сегодня мы поговорим об индексации ресурсов со сложным интерфейсом и структурой:

  • о том, почему Google обрабатывает их так, как это делают современные браузеры;
  • зачем нужно обращаться к внешним ресурсам;
  • как наша система анализирует код JavaScript и CSS.
Читать дальше →
Total votes 27: ↑20 and ↓7+13
Comments14

Отображение контента iOS-приложений в результатах Поиска Google и другие приятные новости

Reading time3 min
Views7.6K
Привет, Хабр! Буквально пару дней назад мы рассказывали про отображение контента Android-приложений в результатах поиска Google. Но мы не остановились на этом и сегодня представляем вам индексирование приложений iOS. Теперь пользователи iPhone, iPad и iPod touch тоже могут открывать страницы мобильных приложений прямо из результатов Поиска!


Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments5

Яндекс начал индексировать Google Документы с паролями

Reading time1 min
Views65K
Только что стало известно что Яндекс начал индексировать Google Документы в числе которых есть и документы с паролями, личными данными и т.д.

image

Ссылка на поисковый запрос

Рекомендуется всем проверить настройки доступа своих Google Документов.
Читать дальше →
Total votes 50: ↑43 and ↓7+36
Comments116

Распознавание подкастов

Reading time1 min
Views982
Недавно я начал запись подкастов и столкнулся вот с какой проблемой: поисковики не умеют индексировать голос и видео изображения, поэтому каждый подкаст необходимо снабжать текстовыми комментариями и описанием, которые проиндексируют поисковики. Очень хорошо для индексации было бы весь подкаст изложить в текстовом варианте.

Времени на такую работу обычно не бывает, а работа очень важная. Можно было бы сделать такой проект, в котором подкастеры будут заказывать «конвертацию» подкастов в текст, за что будут платить трансляторам денежки. В результате всем хорошо: подкастеры получаю нормальное индексирование, «трансляторы» (те кто слушают подкасты и набивают тексты) получают заработок.

UPD. Вопрос к комментаторам: как по вашему мнению, хватит ли денег, которые заплатят авторы подкастов за распознавание чтобы привлечь распознователей? а организаторам проекта что-нибудь останется?
Total votes 14: ↑9 and ↓5+4
Comments19

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

Reading time2 min
Views1.1K
Перевод статьи от 5-го октября 2008 на тему индексации (теоретической) гуглом закрытой части веба, посредством своего браузера Chrome. Перевод любительский, но я старался чтобы было понятно. Приятного чтения.
____

Прошло больше месяца с того момента, как Google выпустил свой open source браузер, Chrome. Интересная теория, которую мы услышали недавно, о том, что Google использует Chrome для создания индекса закрытой части интернета (страниц защищенных паролем), или «темной стороны интернета»
Читать дальше →
Total votes 62: ↑54 and ↓8+46
Comments70

In-memory-data-grid. Режимы работы, индексы, блокировки

Reading time4 min
Views12K
Я продолжаю небольшой цикл статей на тему In-memory-data-grid.
В первой статье была раскрыта сама концепция IMDG без конкретных примеров и деталей реализации. Сегодня мы копнем чуть глубже.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments4

Данные о метаданных: к вопросу об индексировании технических чертежей

Reading time2 min
Views4.2K
imageОт переводчика. Продолжаем серию статей, посвященных проблеме создания электронных архивов проектной и конструкторской документации. Сегодняшняя статья посвящена проблеме индексирования отсканированных чертежей. Под индексированием (атрибутированием) в данном случае понимается анализ и последующий ввод в систему метаданных, на основе которых осуществляется классификация, структурирование и поиск документов в архиве. Приглашаем наших читателей к дискуссии и обмену практическим опытом по данному вопросу.

Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments8

Индексация AJAX-сайтов поисковым роботом Яндекса

Reading time2 min
Views2K
Рады сообщить, что улучшения индексации AJAX-сайтов Яндекс поддержал изменения в поисковом роботе и правилах обработки им URL таких сайтов.

Технология AJAX пользуется большой популярностью. Однако то, как содержимое страницы «видит» браузер и пользователь, отличается от того, как страницу «видит» робот поисковой системы. Например, пользователь видит удобный интерфейс с динамически подгружаемыми страницами, в то время как содержимое той же страницы для поискового робота может быть пустым или представленным в виде остального статического HTML-контента страницы, для генерации которого не используются скрипты.

При создании AJAX-сайтов могут использоваться URL с #, но такой URL не используется поисковым роботом. Как правило, часть URL после # отсекается. Поэтому вместо URL вида site.ru/#example он обращается к главной странице сайта, расположенной по адресу site.ru. Это значит, что контент страницы может не проиндексироваться и, как следствие, не попасть в результаты поиска.

Теперь вебмастер AJAX-сайта может указать поисковому роботу Яндекса на необходимость индексации, поддержав соответствующую схему в структуре сайта. Для этого нужно:

Читать дальше →
Total votes 39: ↑31 and ↓8+23
Comments9

Разработка в собственном соку или как мы поняли, что занимаемся не тем, что нужно пользователям

Reading time5 min
Views15K
Вы когда-нибудь задумывались над тем, что тысячи компаний создают свои продукты и технологии в отрыве от пользовательских потребностей и решают самостоятельно придуманные проблемы, которые слабо коррелируют с реально существующими?

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

В 2008 году у нас родилась идея максимально упростить процесс поиска в архивах видеосистем. Представьте среднего размера систему из 100 видеокамер и примерно 1000 часов видеозаписей, которые они оставили за сутки (обычно запись видео производится только когда есть активность в кадре). И вам нужно найти что-то в этих записях, но вы не знаете, где и когда это происходило. Вы будете просматривать записи час, второй, третий, и к моменту, когда найдете то, что нужно, проклянете все на свете.

Мы решили создать инструмент, который позволит искать по видео так же, как Google ищет по тексту:
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments8

Индексирование полнотекстовых данных в PostgreSQL с использованием модуля pg_trgm

Level of difficultyEasy
Reading time11 min
Views9.6K

Привет, Хабр!

PostgreSQL, одна из самых мощных и гибких реляционных СУБД, предлагает нам свой модуль pg_trgm, чтобы решить сложную задачу полнотекстового поиска.

Когда речь идет о поиске, просто LIKE запросы больше не всегда могут удовлетворить технические требования. Полнотекстовый поиск подразумевает не только поиск точных соответствий, но и учет схожести слов, учет морфологии, а также поддержку более сложных запросов. PostgreSQL, конечно, предоставляет средства для выполнения таких задач, и модуль pg_trgm - один из инструментов, с помощью которого это можно сделать.

Итак, что такое pg_trgm? Этот модуль PostgreSQL предоставляет набор функций и операторов, которые позволяют работать с трехграммами (триграммами) - это последовательности из трех символов. Для понимания, давайте взглянем на пример...

Читать далее
Total votes 23: ↑21 and ↓2+19
Comments12