Реализация полнотекстового поиска с SoftInform Search SDK

Не так давно мы говорили в общих чертах о реализации полнотекстового поиска в различных приложениях. Сегодня я хочу рассказать (вернее, начать рассказ) об одном из лучших готовых решений для организации такого поиска в приложениях для Windows - SoftInform Search SDK.


Мучиться самому или купить готовое?

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

Поиск - это вообще отдельная тема. Если только вы не имеете желания состязаться в качестве, скорости и прочих важных параметрах с "Гуглом" или "Яндексом", то смысла писать собственный поисковый движок для вас, по большому счету, нету. Современные алгоритмы поиска хотя и просты по своей концепции, тем не менее, достаточно сложны в реализации - здесь, наверное, будет достаточно уместной аналогия с автомобилями. Принципиальная схема устройства автомобиля не менялась уже почти сто лет (если не брать в расчет гибриды и прочие не слишком пока что распространенные новинки). В то же время вряд ли кто-то из энтузиастов возьмется сегодня в одиночку или небольшой командой с небольшим бюджетом разработать полноценный современный автомобиль, который смог бы соперничать с моделями мировых грандов - пусть даже не сегодняшними, а 10-летней или даже 15-летней давности. То же самое и с поиском.

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

 


Почему SearchInform?

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

Итак, для начала определимся, каким требованиям должен удовлетворять типичный поисковый движок, который планируется интегрировать в какое-либо приложение. В общем-то, думаю, вы согласитесь с тем, что для большинства проектов требования будут достаточно стандартными:

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

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

Хотя, в целом, практически все поисковые движки более-менее схожи по своим возможностям, и каждый имеет несколько существенных плюсов и несколько не менее существенных минусов. SoftInform Search SDK однозначно соответствует тем шести пунктам списка критериев выбора поискового SDK, который вы могли увидеть выше. Что касается цены, то она зависит от величины проекта, в котором планируется применять данный SDK, и от количества разработчиков, которые с ним будут работать. Так что конкретные цифры, сами понимаете, я здесь назвать не смогу, но скажу, что они намного ниже стоимости большинства раскрученных движков поиска - и причиной тому является не качество Softinform Search SDK, а его российское происхождение. Есть, правда, и еще один фактор, который, вероятно, также каким-то образом сумел повлиять на цену данного программного продукта. Это практически полностью отсутствующая справка по SDK. Впрочем, этот недостаток искупается готовностью компании-разработчика SDK оперативно отвечать даже на самые дурацкие вопросы со стороны того, кто этот SDK использует.

Что ж, давайте, наверное, посмотрим наконец, что же скрывается за названием SoftInform Search SDK.


Знакомство с SoftInform Search SDK

Для начала, как водится, я скажу, что найти этот SDK можно на официальном сайте компании SoftInform - www.softinform.ru. Там, кстати говоря, можно увидеть и другие интересные продукты, выполненные с применением все того же поискового движка.

Как написано на только что упоминавшемся мною официальном сайте, "Softinform Search SDK предоставляет поиск как по стандартным источникам данных (файлы, почтовые сообщения, сообщения клиентов для мгновенного обмена сообщениями), а также по любым пользовательским данным". Пожалуй, несмотря на емкость и кажущуюся простоту этой фразы, имеет смысл подробнее остановиться на источниках данных, которые упоминали создатели этого программного продукта.

Во-первых, есть поддержка индексации содержимого баз данных - для этого в SoftInform Search SDK реализован готовый источник данных для подключения к любым базам данных, для которых есть установленный в системе ADO драйвер или готовое ODBC-подключение. Во-вторых, SoftInform Search SDK поддерживает индексацию большого количества форматов файлов, как текстовых, так и, например, тегов mp3- и avi-файлов, а также в придачу ко всему этому индексирует данные из заархивированных файлов. Также с его помощью можно индексировать и производить полнотекстовый поиск как по телу письма, так и по прикрепленным файлам для почтовых баз некоторых популярных почтовых клиентов. Также SoftInform Search SDK индексирует историю сообщений множества клиентов мгновенного обмена сообщениями с возможностью полнотекстового поиска по ней. Наконец, в-третьих, в SoftInform Search SDK реализована функция поддержки нестандартных источников данных. Как пишут на своем сайте разработчики продукта, "при необходимости мы можем сделать доступными для индексации нашей программой данные, хранящиеся в любом формате, подключив их как дополнительный источник данных. Эта технология позволяет постоянно расширять список поддерживаемых форматов данных".

Каким именно образом реализуется одно из главных требований в нашем списке - требование простоты включения поисковых возможностей SoftInform Search SDK в разрабатываемое приложение? Здесь создатели этого SDK решили не изобретать велосипед, а воспользоваться надежной и проверенной годами работы и десятками тысяч программистов технологией COM. Это особенно удобно для многоязычных проектов, уже имеющих за своими плечами длинную историю и переживавших смену разработчиков, писавших функциональность на том, на чем они её могли и умели писать. Так что если ваш проект относится к тем, в которых движок написан на C++, а UI - на Delphi и C#, то, пожалуй, SoftInform Search SDK будет для вас настоящим спасением.

Что ж, к сожалению, объем газетной статьи, скажем прямо, не безграничен, что накладывает определенные ограничения и на нас с вами. Так что мы продолжим наше знакомство с таким замечательным программным продуктом, как SoftInform Search SDK, в следующих номерах "Компьютерных вестей".

Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by

Версия для печатиВерсия для печати

Номер: 

20 за 2010 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

Аватар пользователя Инкогнито
Лажа полная. В России это никто не покупает, так они решили в Беларуси лохов поискать.
Аватар пользователя Логик
>В России это никто не покупает

На Руси забили на полнотекстовый поиск?! - А чем же они ищут?

Аватар пользователя Инкогнито
Не, в России описанный в данной статье продукт никого не впечатлил. Например, издание CNews, рассматривая системы полнотекстового поиска, его даже в рейтинг не включает - столь мало пользователей. А у нас он втюхивается как панацея, некий чудо-софт.