Перейти к основному содержанию

Консалтинговые услуги

Казань:+7(843)528-22-18, +7(8552) 25-01-99
+7 (917) 272-13-90, +7(843) 278-19-00

Каталогизация в реальном мире очевидно хромает без хорошего полнотекстового поиска никуда. Основные поисковые бренды на данный момент: Solr, Sphinx, Elasticsearch

 

Что нам дает Elasticsearch?

Краткий словарик начинающего гуманитария Установка и использование Анализаторы Нечеткий поиск CJK Безопасность Эпилог Несмотря на то что XXI век принес в наши дома (не во все, но всё же) гигабитные каналы связи и котиков на YouTube в разрешении 4K и 60 FPS, основой Сети, самой массовой его частью, все еще остаются текстовые данные.

Рефераты и курсовые работы, технические драмы на Хабре и Stack Overflow, сидящий занозой в ... Роскомнадзора Луркмор — все это текст, все это слова.

А поскольку каталогизация в реальном мире очевидно хромает, то без хорошего полнотекстового поиска никуда. Основных поисковых брендов на данный момент существует несколько: это Solr, Sphinx, Elasticsearch.

Но сегодня мы поговорим только о последнем. Elasticsearch — это на самом деле не вполне самостоятельный поиск. Это, скорее, красивая обертка над библиотекой Apache Lucene (на нем же строится Solr).

Но не стоит воспринимать слово «обертка» в негативном ключе. Lucene сам по себе вообще мало на что годен. Это все-таки не полноценный сервис, а просто библиотека для построения поисковых систем. Все, что она может, — только индексировать и искать.

А API для ввода данных, для поисковых запросов, кластеризация и прочее — это все отдается на откуп «обертке».

Что нам дает Elasticsearch?

Масштабируемость и отказоустойчивость. Elasticsearch легко масштабируется. К уже имеющейся системе можно на ходу добавлять новые серверы, и поисковый движок сможет сам распределить на них нагрузку. При этом данные будут распределены таким образом, что при отказе какой-то из нод они не будут утеряны и сама поисковая система продолжит работу без сбоев. На самом деле оно даже работает. В хипстерском стиле «чувак, вот тебе три команды — пользуйся ими и, пожалуйста, не задумывайся, какой ад происходит внутри». И часто это прокатывает. Новые ноды подключаются буквально парой строчек в конфиге, почти как у Redis. Главное, мастеры со слейвами не путать, а то он возьмет и молча потрет все данные :). При выпадении каких-либо серверов из кластера, если правильно были распределены реплики данных, корректно настроенное приложение продолжит поиск, как будто ничего не произошло. После того как сервер поднимется, он сам вернется в кластер и подтянет последние изменения в данных.

Мультиарендность (англ. multitenancy) — возможность организовать несколько различных поисковых систем в рамках одного объекта Elasticsearch. Причем организовать их можно абсолютно динамически. Очень интересная особенность, которая в отдельных случаях становится определяющей при выборе поисковой системы. На первый взгляд может показаться, что необходимости в этой особенности нет.

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

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

Операционная стабильность — на каждое изменение данных в хранилище ведется логирование сразу на нескольких ячейках кластера для повышения отказоустойчивости и сохранности данных в случае разного рода сбоев. Отсутствие схемы (schema-free) — Elasticsearch позволяет загружать в него обычный JSON-объект, а далее он уже сам все проиндексирует, добавит в базу поиска. Позволяет не заморачиваться слишком сильно над структурой данных при быстром прототипировании. RESTful api — Elasticsearch практически полностью управляется по HTTP с помощью запросов в формате JSON.

Краткий словарик начинающего гуманитария

Стемминг — это нахождение основы слова для заданного исходного слова. Основа необязательно совпадает с морфологическим корнем слова.

Лемматизация — приведение слова к нормальной (словарной) форме. Для существительных это именительный падеж и единственное число.

Корпус — в лингвистике корпусом называется совокупность текстов, собранных в соответствии с определенными принципами, размеченных по определенному стандарту и обеспеченных специализированной поисковой системой. Это может быть и разделение по стилям и жанрам, разделение по эпохе написания, по форме написания.

Параллельный корпус — это один или более текстов на двух языках, сопоставленные между собой парами, когда в каждой паре оба предложения несут один и тот же смысл.

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

Установка и использование Установить Elasticsearch проще простого. Есть готовые репозитории и для RHEL/Centos, и для Debian. Можно отдельно установить из тарбола.

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

Мы предлагаем Вам воспользоваться комплексом услуг Компании:

  • консультационная и информационная поддержка и сопровождение участников федеральных и региональных мер государственной поддержки в том числе налоговых льгот, грантов и субсидий (мы помогли нашим клиентам привлечь более 11 миллиардов рублей государственных средств)
  • разработка бизнес-плана, технико-экономического обоснования (ТЭО), меморандума, презентации, паспорта проекта, концепции развития (стратегии), подготовка пакета документации по проекту (мы оказали уже 1 160 комплексов таких услуг),
  • проведение исследований рынков (маркетинговых) продукта, работ, услуг, поиск рыночных ниш, анализ конкурентной среды и перспектив развития,
  • помощь финансиста, экономиста, юриста, маркетолога - для использования льготных налоговых режимов, льготных ресурсов, привлечения льготных государственных инвестиций в проект, бизнес (мы провели более 11 400 консультаций для малого и среднего бизнеса),

Мы будем рады помочь Вам в решении Ваших задач. По любым возникающим вопросам, пожалуйста, обращайтесь.