Офлайн выполняется подключение результаты появятся. «Яндекс.Поиск» для iOS научился искать без интернета
Многие из нас все еще попадают в ситуации, когда нужно быстро найти важную информацию, но доступ в интернет ограничен или отсутствует. И одно дело – пытаться открыть развлекательный пост на сайте, и совсем другое – искать номер телефона горячей линии банка или больницы. Сегодня я впервые расскажу читателям Хабра о том, как ускорение поиска в приложении Яндекс привело к возможности искать важную информацию без интернета.
Но для начала нужно понять главное: зачем мы вообще взялись за офлайн-поиск, если сайты из результатов поиска все равно недоступны при отсутствии сети?
EDGE-поиск
На радарах Яндекса традиционно видны люди, которые вводят запрос, но затем покидают страницу, не дождавшись загрузки из-за плохого мобильного интернета. В этой ситуации мы не могли повлиять на общее качество сети и скорость загрузки всех сайтов, но сделать менее болезненным хотя бы процесс поиска и сэкономить этим немного времени стоило попытаться. Собственно, поэтому этот проект изначально и назывался EDGE-поиском, т.е. поиском при медленном интернете.
Ускорить поиск можно двумя способами. Во-первых, максимально оптимизировать веб-версию и те API, которые использует приложение. И эта работа тоже ведется, но даже этого недостаточно. Во-вторых, можно заранее загрузить на устройство то, что пригодится при плохом соединении. Очевидно, что уместить весь индекс интернета в телефоне физически невозможно. Поэтому нужно было зайти со стороны локального хранения уже готовых результатов поиска по конкретным запросам. По каким? Предсказывать будущие запросы человека с высокой точностью пока никто не умеет (но мы учимся). Поэтому берем популярные повторяющиеся запросы.
Когда мы говорим про популярные запросы, то многие представляют себе запрос [вконтакте] и несколько подобных. На самом деле у нас сотни тысяч менее очевидных запросов, которые регулярно повторяются в больших количествах. А это уже многие сотни мегабайт результатов. Причем сохранять мы планировали не только результаты поиска, но и подсказки, которые появляются в процессе ввода запроса. И здесь многие спросят: зачем хранить в офлайне подсказки, ведь человек вполне способен ввести запрос и без них?
При вводе запросов в приложении Яндекс пользователи видят не обычные поисковые подсказки, а в виде отдельных слов/пар слов (т.е. предиктивный ввод текста). Обычные подсказки нельзя отредактировать: если нужно дописать слово, то придется вводить весь запрос самостоятельно. Подсказки в виде слов позволяют вносить правки, покрывают куда бОльшее число запросов и значительно ускоряют их ввод человеком.
Но главное в том, что подсказки оказались особенно полезны при работе в офлайн-режиме. Эти подсказки помогают людям сформулировать свой вопрос так, как это делает большинство, а это, в свою очередь, увеличивает шанс того, что ответ будет получен из локального кэша. Именно поэтому важно было сохранить и подсказки.
Эмпирически мы подобрали определенный минимум поисковых запросов (порядка 150 тыс.) и подсказок, меньше которого хранить смысла уже не оставалось. Но объем всего этого багажа по-прежнему выходил за рамки приличного (несколько сотен мегабайт). Даже с учетом того, что для каждого запроса хранились лишь топ-10 результатов. Нужно было что-то делать.
От оптимизации к офлайну
Начали искать все то, что можно было отправить «под нож». Каждый результат содержал в себе не только ссылки на сайты, но и фавиконки и сниппеты. Фавиконки – это картинки, а значит, здесь можно было добиться серьезной экономии. Один и тот же сайт может встречаться в результатах для совершенно разных запросов, поэтому мы изначально не дублировали фавиконки, а хранили их по сайтам. А дальше мы сделали так, что вероятность сохранения фавиконки прямо пропорциональна частоте появления сайта в результатах поиска. Иными словами, мы отказались от большинства фавиконок, но визуально это не сильно бросается в глаза.
Чем больше мы сокращали обычные результаты поиска в пользу уже готовых ответов, тем ближе подходили к пониманию, что наш EDGE-поиск уже не просто ускоряет работу, а способен отвечать на широкий круг вопросов вообще без соединения с интернетом. Сами того не замечая, мы уже работали над офлайн-поиском. А значит, ставку надо делать на готовые ответы. Осознав это, мы приступили к обогащению базы важными фактами, которые до этого не могли попасть туда из-за ограничения популярности запроса. Эти результаты содержат только ответы, без выдачи сайтов.
По похожей схеме мы скопировали в базу все карточки объектного ответа и все запросы, для которых объектный ответ доступен. Карточки при офлайн-поиске отличаются от оригиналов почти полным отсутствием картинок: мы убрали их из соображений экономии.
Рост базы фактов требовал дальнейшей работы над оптимизацией и такой структуры хранения данных, которая бы бережно относилась к ресурсам устройства.
Словари
База скачивается на устройство не целиком, а в виде отдельных словарей, причем только при Wi-Fi-соединении и только при достаточном уровне заряда. Разбивка на словари сделана по двум причинам. Во-первых, если при загрузке соединение рвётся, то во время следующей попытки будут скачиваться только те словари, которые не успели скачаться раньше. Во-вторых, для дополнительной экономии места база загружается и хранится на устройстве в сжатом виде, но при каждом запросе распаковывается не целиком, а только нужными частями.
Каждый словарь содержит запросы, начинающиеся на определенные буквы, а также все данные для выдач и подсказок по этим запросам. Отсортировать данные перед разбивкой на словари именно по первым буквам запросов оказалось логичнее, чем, например, по их популярности. Представьте ситуацию: в первом словаре лежат самые популярные запросы, во втором - чуть менее популярные и так далее. Но популярность запросов часто меняется, а это приведет к необходимости регулярно обновлять словари только ради того, чтобы переместить запрос из одного в другой. Это затраты трафика, энергии и времени. Поэтому было важно сделать так, чтобы при актуализации базы запросы не перемещались между словарями. Алфавитный порядок оказался простым и эффективным решением.
Ответы на одни и те же запросы могут различаться в разных частях страны, поэтому для разных регионов формируются свои словари. Причем при кратковременных визитах в другой регион приложение не будет спешить с обновлением словарей – мы предусмотрели сценарии командировок и туризма.
Как бы мы ни старались, офлайн-поиск покрывает не все возможные запросы, но уже сейчас выручает в среднем при каждом третьем. Как и для любого среднего результата, это значит, что одна часть пользователей сталкивается с офлайн-ответами куда чаще, чем другая. Поэтому мы, конечно же, позволяем полностью отключить офлайн-поиск в настройках.
Нашей команде было бы интересно узнать мнение читателей Хабра об этом направлении и получить отзывы о работе беты
Что такое режим офлайн? Если говорить простым языком, это возможность работы в каком-либо приложении при отсутствии доступа к связи. Для компьютеров это отключение, прежде всего, Интернета, возможно, и локальной сети. Для мобильных телефонов это также отключение и телефонной связи, и Bluetooth.
Для чего нужен офлайн-режим на компьютерах?
Большинство пользователей ПК, даже работая в программах, которые не связаны с необходимостью доступа в Интернет, постоянно к нему подключены. Некоторые - по привычке, другие - из-за использования таких операционных систем, как ChromeOS. В данной системе все действия совершаются через Интернет. Если вам понадобится что-либо распечатать, а доступа к Сети нет, то вы ничего не сможете сделать, если, конечно, документ не сохранен в локальном хранилище и нет другой операционной системы.
Помимо этого, известно, что Google отслеживает действия пользователей и передает их личные данные американским спецслужбам по требованию. Если вы не озабочены проблемами конфиденциальности, то вспомните о том, что для MS Windows, которой пользуется большинство пользователей, в Сети полно вирусов, и подцепить их там, где Интернет можно было не использовать, порой достаточно обидно.
Автономный режим в мобильном телефоне
После того как мы разобрались, что такое режим офлайн в компьютере, посмотрим, что он собой представляет в мобильном телефоне.
В телефонах, в которых установлена операционная система Android, он называется "Автономным режимом". Его используют в тех местах, где использование мобильной связи недопустимо. Примером такого места может являться самолет, поэтому часто этот режим в телефонах называют "Режимом полета". Использование данного режима позволяет экономить батарею, которая, как известно, имеет свойство разряжаться в самое неподходящее время.
Как отключить офлайн-режим? В разных телефонах это происходит по-разному. Обычно данная опция находится в "Настройках", где нужно выбрать "Профили" или "Режимы", а там уже поставить галочку напротив "Обычный режим". В некоторых моделях требуется перезагрузка, после чего будет автоматически предложено перейти в обычный режим.
Убираем офлайн-режим в браузерах
В случае если у вас лимитированный трафик, который неожиданно стал заканчиваться, нужно срочно выходить в режим офлайн. Что такое в этом случае предпринимается? Следует включить в браузерах, с помощью которых осуществлялся выход во Всемирную сеть, автономный режим. Тогда многие страницы из тех, которые посещались во время работы Интернета, можно будет просмотреть из кэша.
В этом случае ответ на вопрос "как убрать офлайн-режим" достаточно тривиален - нужно снять галочку с "Автономного режима". В новых версиях браузеров обычно панель меню скрыта, поэтому ее нужно вызвать доступным способом, например, нажав Alt на клавиатуре, а там уже выбрать "Автономный режим".
Офлайн как синоним невидимости
Термин "офлайн" стал настолько популярным, что его стали использовать не только как показатель отсутствия Сети, но и как показатель реального или мнимого отсутствия в Сети. Так, можно зайти в социальную сеть "ВКонтакте" и сделаться невидимым для других пользователей. То есть вы будете присутствовать на сайте, но для других пользователей ваш статус указывает совсем противоположную информацию. Это также называют "нахождением в офлайне".
Работа с некоторыми интернет-приложениями офлайн
Изначально онлайновые приложения, такие как "Гугл документы", получили возможность работать в офлайн-режиме. Можно отметить, что это способствует здоровому соперничеству между создателями офисных приложений, прежде всего корпорациями Microsoft и Google, что должно повысить их конкурентоспособность.
Как включить офлайн-режим в "Гугл документах"? Этого возможно добиться, используя браузер Chrome или его открытый аналог Chromium. Открываем в нем свое "облако" в "Гугле" (Google Drive) - для этого нужен интернет, далее в панели навигации щелкаем по кнопке "Еще". Выбираем категорию "Автономные", в результате чего появится инструкция, в которой указано, что сначала нужно установить аддон для этих целей, после чего нажать кнопку доступа офлайн. Это приведет к тому, что файлы из "облака" будут скопированы на локальное устройство хранения. После этого можно отключать интернет и работать с "Гугл Документами" офлайн.
Таким образом, мы ответили на вопрос: "Как включить офлайн-режим в приложениях «Гугл Докс»?"
Подобным образом можно работать и с "Гугл картами". При нахождении в онлайн-режиме указывается область на карте, которая будет необходима при работе офлайн. Затем карта скачивается, и по данной области можно будет осуществлять поиск офлайн.
В мобильном телефоне офлайн-режим может быть включен не только полным отключением мобильной сети, но и отключением одного интернета с помощью снятия галочки с "Использования мобильных данных".
Выход из офлайн-режима
Иногда для отдельных приложений выход из офлайна может блокироваться файерволами. Так, в "Стиме" для игр также предусматривается режим офлайн. При этом в Social Club некоторые пользователи не могут покинуть офлайн-режим. Для того чтобы снять это ограничение, необходимо зайти в настройки файервола и откорректировать там правила и зоны. Здесь этим файлам Social Club дано табу на выход в Интернет. Его необходимо снять, после чего выход из офлайн-режима станет возможным.
Это относится не только к Social Club, но и к некоторым играм Steam. Возможно, наблюдается и в других приложениях.
Как выйти из офлайн-режима? Если данная операция заблокирована, идем в файервол, проверяем правила и зоны, делаем их разрешительными для данного приложения. Если такое встречается часто, проверьте настройки брандмауэра Windows.
В заключение
Подведем итог: что такое режим офлайн? Помимо того, что это режим без доступа к Интернету, под данным термином понимают и невидимость в некоторых социальных сетях. Некоторые интернет-приложения способны работать офлайн, при этом скачивая "облачные" файлы на локальные хранилища.
Российское приложение «Яндекс.Поиск» для iPhone обзавелось скрытой функцией поиска без подключения к Интернету. Данное нововведение обнаружили некоторые пользователи программы после обновления до версии 2.0. В настоящее время опробовать все преимущества офлайн-поиска может практически любой желающий, сообщили нашей редакции в пресс-службе Яндекса.
Первоначально задумка реализовать офлайн-доступ к системам, не способным корректно работать без прямого подключения к Сети, появилась у разработчиков систем навигации. Возможность предварительно загрузить данные, включающие в себя маршруты и основные направления движения общественного транспорта, пришлась по вкусу путешественникам и простым обывателям. Оснастить же аналогичной функциональностью поисковик оказалось куда как сложнее, однако для создателей « .Поиска» не было ничего невозможного.
Принять участие в бета-тестировании может любой владелец iPhone или iPad под управлением iOS версии 8.1 и новее. Активировать скрытую изначально функцию можно путем многократного запуска приложения с последующей выгрузкой его из меню многозадачности. После появления в меню настроек вкладки офлайн-поиска система автоматически загрузит необходимые для работы вне Сети сведения, объем которых может колебаться от 40 до 120 мегабайт. С чем связаны подобные странности, Яндекс не сообщает.
>
Загруженная база данных позволяет получить доступ к телефонам экстренных служб, банков и многому из того, что обычного пользователя заинтересует меньше всего. При этом, что странно, лично мне офлайн-поиск отказался сообщить номер службы спасения и скорой помощи. Вместо этого я мог повысить собственный кругозор чтением биографии звезды эстрады Филиппа Бедросовича Киркорова, истории Италии и эпохи Ренессанса, а также выяснить, как добраться до города Орла.
По некоторым данным, предоставляемая пользователям информация может существенно отличаться друг от друга. Иными словами, те сведения, которые могут почерпнуть одни, окажутся абсолютно недоступными для других. Избирательность приложения, судя по всему, напрямую зависит от объема загруженного предварительно кеша, который автоматически обновляется в ночное время суток при условии подключения к интернету. Появится ли повсеместная возможность офлайн-поиска без каких-либо ограничений, в настоящий момент остается загадкой.
Многие из нас все еще попадают в ситуации, когда нужно быстро найти важную информацию, но доступ в интернет ограничен или отсутствует. И одно дело – пытаться открыть развлекательный пост на сайте, и совсем другое – искать номер телефона горячей линии банка или больницы. Сегодня я впервые расскажу читателям Хабра о том, как ускорение поиска в приложении Яндекс привело к возможности искать важную информацию без интернета.
Но для начала нужно понять главное: зачем мы вообще взялись за офлайн-поиск, если сайты из результатов поиска все равно недоступны при отсутствии сети?
EDGE-поиск
На радарах Яндекса традиционно видны люди, которые вводят запрос, но затем покидают страницу, не дождавшись загрузки из-за плохого мобильного интернета. В этой ситуации мы не могли повлиять на общее качество сети и скорость загрузки всех сайтов, но сделать менее болезненным хотя бы процесс поиска и сэкономить этим немного времени стоило попытаться. Собственно, поэтому этот проект изначально и назывался EDGE-поиском, т.е. поиском при медленном интернете.
Ускорить поиск можно двумя способами. Во-первых, максимально оптимизировать веб-версию и те API, которые использует приложение. И эта работа тоже ведется, но даже этого недостаточно. Во-вторых, можно заранее загрузить на устройство то, что пригодится при плохом соединении. Очевидно, что уместить весь индекс интернета в телефоне физически невозможно. Поэтому нужно было зайти со стороны локального хранения уже готовых результатов поиска по конкретным запросам. По каким? Предсказывать будущие запросы человека с высокой точностью пока никто не умеет (но мы учимся). Поэтому берем популярные повторяющиеся запросы.
Когда мы говорим про популярные запросы, то многие представляют себе запрос [вконтакте] и несколько подобных. На самом деле у нас сотни тысяч менее очевидных запросов, которые регулярно повторяются в больших количествах. А это уже многие сотни мегабайт результатов. Причем сохранять мы планировали не только результаты поиска, но и подсказки, которые появляются в процессе ввода запроса. И здесь многие спросят: зачем хранить в офлайне подсказки, ведь человек вполне способен ввести запрос и без них?
При вводе запросов в приложении Яндекс пользователи видят не обычные поисковые подсказки, а в виде отдельных слов/пар слов (т.е. предиктивный ввод текста). Обычные подсказки нельзя отредактировать: если нужно дописать слово, то придется вводиться весь запрос самостоятельно. Подсказки в виде слов позволяют вносить правки, покрывают куда бОльшее число запросов и значительно ускоряют их ввод человеком.
Но главное в том, что подсказки оказались особенно полезны при работе в офлайн-режиме. Эти подсказки помогают людям сформулировать свой вопрос так, как это делает большинство, а это, в свою очередь, увеличивает шанс того, что ответ будет получен из локального кэша. Именно поэтому важно было сохранить и подсказки.
Эмпирически мы подобрали определенный минимум поисковых запросов (порядка 150 тыс.) и подсказок, меньше которого хранить смысла уже не оставалось. Но объем всего этого багажа по-прежнему выходил за рамки приличного (несколько сотен мегабайт). Даже с учетом того, что для каждого запроса хранились лишь топ-10 результатов. Нужно было что-то делать.
От оптимизации к офлайну
Начали искать все то, что можно было отправить «под нож». Каждый результат содержал в себе не только ссылки на сайты, но и фавиконки и сниппеты. Фавиконки – это картинки, а значит, здесь можно было добиться серьезной экономии. Один и тот же сайт может встречаться в результатах для совершенно разных запросов, поэтому мы изначально не дублировали фавиконки, а хранили их по сайтам. А дальше мы сделали так, что вероятность сохранения фавиконки прямо пропорциональна частоте появления сайта в результатах поиска. Иными словами, мы отказались от большинства фавиконок, но визуально это не сильно бросается в глаза.
Чем больше мы сокращали обычные результаты поиска в пользу уже готовых ответов, тем ближе подходили к пониманию, что наш EDGE-поиск уже не просто ускоряет работу, а способен отвечать на широкий круг вопросов вообще без соединения с интернетом. Сами того не замечая, мы уже работали над офлайн-поиском. А значит, ставку надо делать на готовые ответы. Осознав это, мы приступили к обогащению базы важными фактами, которые до этого не могли попасть туда из-за ограничения популярности запроса. Эти результаты содержат только ответы, без выдачи сайтов.
По похожей схеме мы скопировали в базу все карточки объектного ответа и все запросы, для которых объектный ответ доступен. Карточки при офлайн-поиске отличаются от оригиналов почти полным отсутствием картинок: мы убрали их из соображений экономии.
Рост базы фактов требовал дальнейшей работы над оптимизацией и такой структуры хранения данных, которая бы бережно относилась к ресурсам устройства.
Словари
База скачивается на устройство не целиком, а в виде отдельных словарей, причем только при Wi-Fi-соединении и только при достаточном уровне заряда. Разбивка на словари сделана по двум причинам. Во-первых, если при загрузке соединение рвётся, то во время следующей попытки будут скачиваться только те словари, которые не успели скачаться раньше. Во-вторых, для дополнительной экономии места база загружается и хранится на устройстве в сжатом виде, но при каждом запросе распаковывается не целиком, а только нужными частями.
Каждый словарь содержит запросы, начинающиеся на определенные буквы, а также все данные для выдач и подсказок по этим запросам. Отсортировать данные перед разбивкой на словари именно по первым буквам запросов оказалось логичнее, чем, например, по их популярности. Представьте ситуацию: в первом словаре лежат самые популярные запросы, во втором - чуть менее популярные и так далее. Но популярность запросов часто меняется, а это приведет к необходимости регулярно обновлять словари только ради того, чтобы переместить запрос из одного в другой. Это затраты трафика, энергии и времени. Поэтому было важно сделать так, чтобы при актуализации базы запросы не перемещались между словарями. Алфавитный порядок оказался простым и эффективным решением.
Ответы на одни и те же запросы могут различаться в разных частях страны, поэтому для разных регионов формируются свои словари. Причем при кратковременных визитах в другой регион приложение не будет спешить с обновлением словарей – мы предусмотрели сценарии командировок и туризма.
Как бы мы не старались, офлайн-поиск покрывает не все возможные запросы, но уже сейчас выручает в среднем при каждом третьем. Как и для любого среднего результата, это значит, что одна часть пользователей сталкивается с офлайн-ответами куда чаще, чем другая. Поэтому мы, конечно же, позволяем полностью отключить офлайн-поиск в настройках.
Нашей команде было бы интересно узнать мнение читателей Хабра об этом направлении и получить отзывы о работе беты приложения Яндекс для Android. Спасибо.
Правда, пока в закрытой бета-версии.
30 июня «Яндекс» обновил до версии 2.0 свой поисковик для iOS, в котором появилось несколько небольших полезных новшеств, о которых рассказано в описании обновления в App Store, однако о самом интересном разработчики умолчали. Как сообщает Tjournal, в приложении в бета-режиме появилась функция офлайн-поиска, которая позволяет найти ответы на некоторые вопросы без подключения к Интернету.
Раздел «Офлайн-поиск» в приложении появился не у всех, только у небольшого числа тестеров. При использовании сервис скачивает на устройство «небольшую базу ответов на популярные запросы» размером более 100 МБ.
Эту базу «Яндекс» использует, когда пользователь пытается найти что-либо при отсутствии подключения к интернету или на медленной скорости (например, по Edge). База содержит телефоны служб поддержки и горячих линий, основную информацию об известных людях и фильмах, а также переводчик. Оффлайн-поиск отображает только текстовую информацию.
База флайн-ответов на запросы обновляется с частотой раз в день при наличии подключения к Wi-Fi и достаточного заряда батареи устройства, рассказали в «Яндексе». Когда и заработает ли вообще новая функция полноценно, пока неизвестно. Как и то, удастся ли ее протестировать пользователям на Android.
Яндекс - поиск и картина дняБесплатно
|