Вкратце: хочу сделать презентацию и пару раз выступить на конференциях интернет магазинов. Написал текст презентации, нужны отзывы. Надеюсь на вашу помощь в составлении грамотного и доступного текста.
Текущий текст презентации под катом
Общие сведения о полнотекстовом поиске
Полнотекстовый поиск – это по сути гугл и яндекс технологии: пользователь вводит поисковый запрос – получает ответ в виде определенного набора страниц. На сайте интернет магазина это скорее всего будет список продуктов, наиболее близко подходящих под поисковый запрос. Есть такое понятие – релевантность, так вот, она важна. Также важны: синонимы, опечатки, морфология и обычная логика обычного рядового покупателя.
В интернет магазине, к примеру, слова «купить», «лучший», «качественный» можно просто игнорировать, так как они ничего не значат. А по словам «модный», «дорогой», «епл айфон», «bosh аккумулятор для киа сид» можно однозначно определить, что именно нужно человеку.
Вот вкратце о том, для чего нужен полнотекстовый поиск.
Зачем нужен поиск на сайте: достоинства и недостатки
Основная причина и цель – это конверсия посетителя в покупателя, то есть процент покупок относительно посетителей на сайте. Чем проще человеку найти товар – тем больше вероятность, что он станет покупателем. С каждым днем покупатели становятся все ленивее и привыкают к удобным поисковым технологиям других магазинов, поэтому отсутствие такого поиска на своем сайте может очень негативно сказаться на продажах.
Кроме того есть специфичная номенклатура, которую простым проходом по каталогу не найти и нужен именно полнотекстовый поиск: это когда более 1000 наименований, или тяжело подобрать именно тот товар, что нужно. В данном случае компьютер упрощает задачу выбора и помогает человеку сделать покупку зряче, а не методом «научного тыка».
Недостатки: $100-$200 на разработку поискового модуля для сайта.
Реализации поиска на Сфинкс (SphinxSearch): ОС, варианты установки, языки программирования
Сфинкс — продукт с открытым исходным кодом. Это фактически поисковый сервер, разработанный с нуля, для высоконагруженных проектов, с настраиваемой релевантностью (имеется в виду качество поиска), а также простотой интеграцией в любой проект. Он написан на C++ и работает на Linux (RedHat, Ubuntu и т.д.), Windows, MacOS, Solaris, FreeBSD и некоторых других менее популярных системах.
Сфинкс позволяет хранить подготовленные индексы текстовых данных, производить поиск по базе данных SQL, NoSQL хранилища, или просто по файлам на сервере быстро и легко. Он может индексировать данные на лету, добавлять к уже существующим новые индексные данные, работая в режиме онлайн не перегружая сервер.
Различные возможности обработки текста дают программисту тонкую настройку Sphinx для требований вашего приложения, а также ряд функций, гарантирующих, что вы сможете настроить качество поиска именно так, как вам это нужно. Есть два варианта подключения:
• Поиск по SphinxAPI — обычный АПИ
• SphinxQL — аналог стандартного SQL
Сфинкс кластера могут масштабироваться до миллиардов документов и десятки миллионов поисковых запросов в день. Такого рода нагрузки выдерживаются на сайтах, как Craigslist, DailyMotion, Netlog, и т.д.
Реальный пример поисковых запросов в интернет магазине автозапчастей
Авто запчастями, а точнее продажей интернет магазинов по запчастям, наша компания занимается давно, плодотворно и довольно успешно. Но в силу ряда причин релевантный поиск понадобился только сейчас.
Основная причина, скорее всего в том, что большинству запчастей полнотекстовый поиск не подходит. Но есть 5-10% товаров, для которых он катастрофически нужен и без него уж никак. А наш стандартный поиск с прямыми по своей сути кросс связями и указанием четкой модели и марки авто из каталога запчастей, для этой группы товаров не работает. Пример таких «неправильных» товаров: масла, шины, аккумуляторы, автолампы, дворники и другие подобные часто продаваемые продукты.
Средний прайс по запчастям небольшой рядовой компании — 2-10 млн позиций, соответственно 10% от этой базы и будут занимать нужные нам данные. Поэтому мы решили внедрить движок sphinxsearch.com/ в своем продукте. Подробнее о данной реализации можно почитать на Хабре: habrahabr.ru/blogs/sphinx/132118/
Углубленное изучение поискового языка запросов
Основной функционал поиска – это настраиваемые веса для полей, а также методы поиска. Для того, чтобы работала морфология и в запросе «масла Castrol 5W40» нашлись документы с текстом «Масло» и «15W40» — нужно одновременно использовать символ "*" и поиск по словоформе «масл», а для этого нужен построитель запросов, который работает именно в режиме «SPH_MATCH_EXTENDED2».
Сортировать по-умолчанию можно как по цене, так и по релевантности, так и по комплексу таких параметров. Можно задать для каждой группы товаров свой метод релевантности и порядок выдачи результатов, особенно это актуально, когда документов более сотни.
Инкрементные индексы позволяют добавлять новые продукты и документы на лету, не останавливая работу вашего интернет магазина.
Ну и самое важное: синонимы. В нашем примере можно использовать запрос «масла кастрол 5W40» и он найдет то же, что и «масла Castrol 5W40». В примере с «C#» нужно включать такие нестандартные словоформы, чтобы они не обрабатывались по стандартной схеме индекса и работали вручную именно так, как вы их настроите. Только вы знаете, какой именно смысл в вашем проекте несет фраза, к примеру «C#» = «ДО ДИЕЗ для музыкантов».
Кто сможет сделать такой поиск на базе сфинкс?
Любой джуниор программист, знакомый с английским языком и умеющий читать документацию на сайте sphinxsearch.com/docs/
Есть также немного русской документации и пару статей на русском языке.
Никаких ограничений фактически нету, разве что боязнь нового подхода к поиску. Кажется, что это все сложно и очень дорого. На самом деле это все просто, быстро и дешево. На хабре есть специальный блог, в котором отзывчивые программисты, включая русскоязычного разработчика движка, отвечают на все возникающие вопросы.
Спасибо, буду рад ответить на возникшие вопросы