Softkey.info: Новый морфологический поиск. Интервью с Сергеем Рыжиковым
04.10.2005
В онлайновом журнале Softkey.info опубликовано интервью с Сергеем Рыжиковым, директором компании «Битрикс».
Автор интервью: Alex Exler
В новой версии программного продукта «Битрикс: Управление сайтом» реализована такая весьма интересная возможность, как морфологический поиск. О том, что это такое и чем новинка будет полезна пользователям данного программного продукта, мы беседуем с Сергеем Рыжиковым, директором компании «Битрикс».
Сергей, какова основная цель создания морфологического поиска для этой системы управления сайтом?
Этих целей несколько:
1) искать на сайте с учетом русской и английской морфологии;
2) искать одновременно в статическом контенте, динамической информации (новости, статьи, фотографии, каталоги товаров и так далее), в форумах;
3) производить немедленную индексацию сразу при изменении или добавлении контента;
4) заметно повысить скорость поиска;
5) дать возможность искать в соответствии с правами доступа к информации;
6) ранжировать результаты поиска по смыслу текста.
Скажите, в каких-нибудь других продуктах реализована подобная возможность?
До недавнего времени морфология была только у "больших", или "внешних", поисковиков. Подобных продуктов для корпоративного использования очень мало, и цена их весьма высока.
А в чем проблемы, почему не было реализовано?
Основная проблема заключается в универсальной индексации контента. На сегодня все умеют индексировать контент следующими способами:
1) обходя сайт снаружи, как посетитель, вычитывая данные и индексируя всю страницу, включая дизайн;
2) получая данные непосредственно из базы данных;
3) индексируя файлы, расположенные в подкаталогах сайта.
Что в результате? Запоздалая индексация, сложности в перестроении индекса, огромные нагрузки на переиндексацию сайта и всего контента при всех трех методах. Нагрузка заставляет устанавливать и настраивать программное обеспечение на выделенных серверах, при этом приходится тратить кучу времени на администрирование. При этом весьма сложно реализовать поиск в соответствии с правами доступа, да и ранжирование при любом из подобных методов индексации заметно хромает.
Так как же эта проблема решена в вашем продукте?
В «Битрикс: Управление сайтом» введено понятие так называемых событий, которые возникают в тех или иных ситуациях в разных модулях. В частности, если мы рассматриваем поиск, то существует ряд событий, которые возникают в момент публикации новости, статьи, товара, документа, страницы, сообщения в форуме, изменения прав доступа к документам и т. п. Событие содержит полный текст контента, адрес представления на сайте, атрибуты прав доступа, ряд служебных данных.
Использование понятия событий позволяет сделать индексацию максимально оперативной, минимизировать нагрузку на оборудование и, что самое главное, позволяет подключать любой внешний поисковый механизм.
Первоначально наш модуль поиска выполнял обработку событий, но не делал морфологический разбор. Данные индексировались и были доступны для прямого поиска по точному совпадению фразы. При этом поиск - что греха таить - был медленным и совершенно неэффективным для конечных потребителей.
Сначала мы пытались договориться со сторонними разработчиками поисковых систем, предлагая им сделать поисковики как бы "черными ящиками" - то есть чтобы владелец сайта, производя поиск, не задумывался над тем, где и как установлен поисковик. То есть чтобы он мог по IP "скармливать" поисковику данные в каком-то формате и так же по IP обращаться за результатами поиска.
Но, как выяснилось, на рынке продуктов поиска для сайта всех интересовали только очень дорогие персональные решения, по сути, кастомные билды. Так что продуктов фактически или нет, ну или возможности по интеграции с ними крайне ограничены. Какие-то успешные попытки переговоров были, но к приемлемому решению, к сожалению, мы так и не пришли.
В результате, как уже понятно, вы решили этот поиск делать сами?
Да, так и есть. По сути, для решения всех поставленных задач нам не хватало только морфологического разбора текста и методики ранжирования. Морфологический разбор русского и английского текста мы реализовали по технологии стеминга, без словаря. На наш взгляд, на сегодня именно данная технология наиболее современна и легче портируется для других языков, что для нас также актуально.
Ранжирование при этом считается как сумма контрастностей слов. Где контрастность определяется как log(word_count+1)/log(documnet_length). В рейтинге также учитывается дата модификации документа.
Такой простой метод ранжирования возможен благодаря тому, что мы индексируем только сам контент без избыточной информации (элементов дизайна и так далее).
Механизм поиска является отдельной программой?
Нет, модуль поиска работает непосредственно в составе продукта. События обрабатываются модулем поиска, который собирает данные и сразу в момент изменения или публикации контента проводит морфологический разбор текста и модифицирует индекс поиска, делая изменения доступными для пользователей.
Как это все выглядит для веб-мастера, работающего с продуктом, и для пользователя, работающего с сайтом?
Как это ни странно, но для веб-мастера, который использует «Битрикс», не потребуется что-то менять. Достаточно в настройках модуля поиска включить поддержку морфологии и переиндексировать сайт. После этого все посетители сайта будут пользоваться морфологическим поиском в полном объеме.
Как дальше планируется развивать данную систему?
Дальше планируется ввести систему синонимов, стоп-слов, автозамен, дать возможность администратору настраивать индивидуальные коэффициенты ранжирования для тех или иных объектов, попробовать несколько разных методик ранжирования и реализовать ряд других изменений.
Есть ли возможность посмотреть, как это все выглядит в работе?
Да, с морфологическим поиском можно ознакомиться на сайтах, построенных на «Битрикс: Управление сайтом». Вот, например:
Сергей, большое спасибо за то, что ответили на наши вопросы.


