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

В основном поиск на сайте стараниями разработчиков ограничивается поиском по ключевым с учетом близости слов запроса друг к другу, а также разные варианты ранжирования на основе совстречаемости слов. Еще немного морфологии, синонимов и иногда, как, например, у RCO, учет некоторых аспектов синтаксиса запроса для установки операторов поиска (см. у них на сайте публикацию о поиске). И на этом по сути технологии поиска в ограниченном корпусе документов заканчиваются. Основные из этих инструментов встроены в поисковые машины Sphinx и Lucene, поэтому доступны любому смертному программисту.

В результате для поиска на сайте мы имеем только поиск по ключевым словам, расширенный морфологией и иногда синонимами. Но поиск по сайту — это не поиск в интернет. Результат гораздо хуже. И вот почему.


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

В результате поиск по ключевым в таких ограниченных условиях приводит к печальным результатам. Об этом косвенно говорит то, что обычно строка поиска на сайтах стоит где-то в углу как не самый важный интерфейс, и все сайты пытаются сделать универсальную навигацию по рубрикам и ссылкам на сайте. Почему это плохо для юзера объяснять не буду. Скажу только, что получается или много рубрик, или большие тексты, которые никто не читает. Конечно, есть такие технологии как Comprento от ABBYY, основанные на онтологиях. Но они не массовые в силу своей стоимости, и применимы только в освоенных их онтоинженерами областях. Мы же говорим об обычных смертных.

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

Мы же ищем сходство «по смыслу», то есть с учетом всех слов запроса и соответственно теме запроса. Поиск ранжируется именно по параметрам семантической схожести, а не частоты или совстречаемости ключевых слов запроса (хотя это тоже учитывается как один из параметров). И результат очень обнадеживающий — вверху поисковой выдачи при поиске в документах только те предложения из текстов, которые наиболее релевантны запросу. И мы стремимся, чтобы ответ был однозначным — в виде одного результата в выдаче. Скоро мы откроем на сайте несколько демонстрационных страниц, где реализованы наши технологии и я опишу их тут.

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

Комментарии (0)