Игорь Чакрыгин Игорь Чакрыгин

У любой задачи существует по крайней мере одно очевидное и невероятно простое для понимания неправильное решение

Sphinx - Полезные полезности (Часть 2)

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

Sphinx - Распределённый поиск

Как известно, одним из ключевых достоинств Sphinx является очень высокая скорость поиска по очень большим объёмам данных. Как утверждают разработчики, самый большой кластер содержит 3 миллиарда документов и выдерживает 50 миллионов запросов в сутки. Понятно, что чем больше нагрузка на Sphinx, тем мощнее ему нужен сервер, мощность которого невозможно бесконечно увеличивать. К счастью, это и не обязательно, поскольку Sphinx имеет встроенные инструменты для горизонтального масштабирования, позволяющие параллельно выполнять запросы на нескольких серверах, а затем объединять результаты.

В этой статье я на простом примере постараюсь показать, как можно настроить несколько экземпляров Sphinx, а затем объединить их для выполнения распределённого поиска.

Sphinx - Настраиваем поиск

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

Sphinx - Полезные полезности

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

Sphinx - Источники данных в формате xml

В предыдущих статьях я рассказал о том, что в качестве источника данных для Sphinx можно использовать базы данных, в частности MS SQL Server. Во многих случаях этого наиболее удобный способ построения индекса, поскольку Sphinx может получить все данные одним запросом. Даже на очень больших объёмах данных этот запрос можно разбить на несколько ranged-запросов и получать данные из базы небольшими порциями.

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

Sphinx - Подключение к Sphinx из .NET

В этой статье я хочу немного отвлечься от рассказа про сам Sphinx и немного поговорить о том, как взаимодействовать с ним из программы, написанной на языке C#.

Как я уже упоминал ранее, наиболее простым и удобным способом взаимодействия со Sphinx является язык запросов SphinxQL, который сильно напоминает обычный SQL. Сами запросы можно выполнять, подключившись к Sphinx как к обычной базе данных MySQL, поскольку Sphinx умеет её эмулировать.

Тем не менее даже используя официальный коннектор MySQL для .NET, взятый с сайта mysql.com, можно столкнуться с некоторыми сложностями, о решении которых я бы и хотел поговорить в этой статье.

Sphinx - Multi-valued атрибуты и joined поля

В предыдущей статье я показал, как можно использовать Sphinx для индексации базы данных MS SQL Server, а также рассказал про дельта-индексы.

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

Sphinx - Индексация базы данных и дельта-индексы

В предыдущей статье я кратко рассказал про основные возможности Sphinx. Пришло время применить эти знания на практике.

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

Sphinx - Источники данных, индексы, поля и атрибуты

В предыдущей статье я максимально подробно постарался описать процесс установки Sphinx в Windows. При этом я не останавливался на вопросах, что же это такое и для чего оно нужно.

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

Sphinx - Установка и настройка

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

В данной статье я хочу подробно описать процесс установки Sphinx в Windows. Данная статья рассчитана на людей, которые, также как и я, ещё мало знакомы со Sphinx (или совсем не знакомы). Опытные разработчики вряд ли найдут в ней что-то новое.

© Игорь Чакрыгин. Все права защищены при помощи чёрной магии. Технологии Blogger.