В январе в этом посте я рассказывал о полнотекстовом поиске в Почте Mail.Ru.
Однако как определить, что новый поиск действительно лучше? О том, как измерить качество поиска, я расскажу в этом посте.
Для начала рассмотрим общую схему исполнения поискового запроса.
Основной параметр качества поиска – это его скорость. Ее удобнее всего измерять на стороне фронтенда примерно вот таким образом:
$mailsearch_start = Time::HiRes::time();
$answer = MailSearch::Query($request);
$mailsearch_end = Time::HiRes::time();
Данные пишутся в лог, а специальный демон раз в 5 минут собирает очередную порцию логов со всех фронтендов и строит очередной отрезок на графике. Стоит отметить, что следует иметь два графика с показателем скорости поиска.
Во-первых, «пятиминутный» график, отображающий текущее состояние. Он может быть полезен для диагностики «острых» состояний, например, если после очередного обновления поиск внезапно стал работать не так, как ожидалось, а намного медленнее.
Рисунок 1. Упс! Похоже, выкатили что-то не то…
Во-вторых, нужен также и «суточный» график, который позволяет обнаружить более глубокие и менее заметные на первый взгляд проблемы. К
примеру, если перестроение индексов происходит слишком редко, то будет постоянно накапливаться некоторый «долг» — определенный объем не проиндексированных данных, по которым возможен только последовательный поиск. Этот «долг» будет виден на графике как медленная деградация по скорости в течение нескольких дней или недель (рисунок 2). Подобное поведение графика – сигнал к тому, что стоило бы пересмотреть политику работы планировщика индексаций в сторону того, чтобы индексировать чаще.
Также этот график оказался для нас очень полезным при переходе со старого поискового движка на новый. Он позволил четко ответить на вопрос: «А стало ли лучше с новым поиском?». Полная переиндексация сервера обычно занимает несколько дней, и суточный график показывает, как за это время поиск постепенно ускорялся вплоть до разницы в 2,5 раза (рисунок 3).
Рисунок 2. Копим «долг» по индексации. Повод задуматься…
Рисунок 3. Переходим на новый поисковый движок.
Следующим стоит отметить график количества поисковых запросов. Данный график сам по себе, без анализа других данных, исследовать трудно. Например, уменьшение количества поисковых запросов может свидетельствовать о двух противоположных вещах:
- Пользователи чаще стали находить искомое с первой попытки (хорошо, см. рисунок 4)
- Пользователи вообще перестали находить искомое (плохо)
Рисунок 4. В данном случае стали чаще находить искомое с первой попытки.
Важным параметром качества поиска является количество запросов с пустым результатом. В среднем оно равно 30%, большая часть таких запросов – это постоянно открытая страница «все непрочитанные» у многих пользователей (ожидание прихода нового письма). Резкий рост данного показателя может свидетельствовать о фатальной ошибке в поиске (при превышении данным показателем некоторого порогового значения имеет смысл слать SMS-уведомление разработчикам и системным администраторам, так как подобные ошибки необходимо устранять за минимальное время, см. рисунок 5).
Рисунок 5. Проявилась какая-то проблема… Время слать SMS.
Количество кликов на письма из поиска прямо указывает на качество выборки результатов (рисунок 6). Благодаря тому, что существуют сниппеты (небольшие выдержки из текста письма с подсветкой слов из запроса), пользователи редко кликают на письма, которые не соответствуют их ожиданиям. Обычно деградация по качеству происходит медленно, и смотреть динамику надо на большом промежутке времени после раскладки очередной версии поиска.
Рисунок 6. Качество поиска улучшилось – увеличилось количество переходов.
Также имеет смысл измерять количество «уточняющих» поисковых запросов. Уточняющим запросом с большой долей вероятности можно считать поисковый запрос, выполненный с открытой страницы результатов поиска. Данный вывод обусловлен предположением, что после того как пользователь попробовал что-то найти, но результаты поиска его не устроили, он решил повторить поиск, но как-то «по-другому», с другим запросом. Таких запросов в среднем 1-3%. Рост данного показателя свидетельствует о том, что поиск перестал находить что-то из того, что ранее находилось успешно (рисунок 7).
Рисунок 7. Лишние 3% повторных запросов.
Развивая тему «уточняющих» поисковых запросов, стоит отметить, что имеет смысл измерять также и количество «перелистываний» результатов поиска. Рост этой величины может служить свидетельством, например, того, что результирующая выборка слишком велика. Таких запросов в среднем 1-2%. Большая часть из них обусловлена естественной необходимостью иногда искать старые письма, листать «глубоко» по времени. Рост данного показателя свидетельствует о том, что что-то «лишнее» попало в результаты и отодвинуло назад (на следующие страницы) релевантные письма. Падение данного показателя, наоборот, определенно хороший признак, ведь пользователи начинают находить искомое на первой странице результатов поиска (рисунок 8).
Рисунок 8. Теперь все нужное на первой странице, и листают реже.
Напоследок рассмотрим такой параметр, как среднее время нажатия на письмо после получения результатов поиска. Данный график свидетельствует как о качестве поисковой выборки (ее точности), так и о качестве подсветки сниппетов. Чем быстрее пользователь находит глазами письмо в выборке, тем быстрее он на него кликает (рисунок 9). Скорость нахождения результата увеличивает как работающий корректно поиск (правильная сортировка, отсутствие «лишних» результатов в выборке), так и качество «подсветки» слов из запроса в сниппетах (чем она лучше, тем быстрее глаз «уцепится» за нужный результат).
Рисунок 9. Переработали раскраску сниппетов, и среднее время перехода упало.
Оценивая качество поиска, имеет смысл анализировать все данные показатели вместе. Подобные графики существуют и для саджестов (поисковых подсказок), от качества которых напрямую зависит и качество самого поиска (3% поисковых запросов делаются с помощью саджестов). Ввиду того, что часто качество поиска деградирует лишь по истечении определенного времени, все графики строятся в двух масштабах – пятиминутном и суточном. Таким образом, появляется возможность диагностировать и решать возможные проблемы с поиском до того момента, когда они станут заметны широкому кругу пользователей.
Если у вас есть вопросы, идеи или опыт решения задач в области QA поиска, давайте обсудим в комментариях.
Дмитрий Калугин-Балашов
программист команды Почты Mail.Ru
P.S.: Все графики сделаны лично мной руками в Excel по мотивам реальных событий.
Автор: rvncerr