Sphinx. настройка, эксплуатация

50 %
50 %
Information about Sphinx. настройка, эксплуатация
Technology

Published on March 4, 2014

Author: andreyborue

Source: slideshare.net

Поисковые технологии Часть 2. Sphinx: установка, настройка, эксплуатация 1

Поисковые технологии. О Sphinx Система полнотекстово поиска7 Милиарды документов7 Высокая скорость поисковых запросов7 Обновление данных в реальном времени7 Масштабируемость (встроенные механизмы шардинга и зеркал)7 Текстовый поиск от 10 до 10 тысяч раз быстрее чем mysql7 Поддержака дополнительных атрибутов для каждой записи и фильтрация по ним 2

Поисковые технологии. О Источники данных source mysql7 {7 type = ...7 ...7 } source products : mysql7 {7 ...7 …7 } MySQL, PostgreSQL, MS SQL (on Windows), and ODBC.7 xmlpipe7 tsvpipe (Tab Separated Values) 3

Поисковые технологии. Особенности Поисковые технологии. О Индексы index products7 {7 type = ...7 ...7 } index products : pr_plain7 {7 …7 ...7 } Disk7 Realtime (RT) 4

Поисковые технологии. О Дисковые индексы Строятся индексацией источников данных7 Занимают минимум памяти7 Не могут быть обновлены 7 Могут быть смержены с другим дисковым индексов 5

Поисковые технологии. О Индексы реального времени Не использую источников данных7 Могут быть созданы на основе дискового индекса7 Можно добавлять/изменить/удалять строки в реальном времени7 Хранится в памяти (если она есть)7 Пишет бинарные логи 6

Поисковые технологии. О Поля/атрибуты Full-text (строка, нельзя прочесть оригинал, только поиск)7 uint (unsigned integers, 32-х битное целое число без знака)7 bigint (64-х битное целое число со знаком)7 float (32-х битное число с плавающей точкой)7 bool (1 бит)7 UNIX timestamps7 strings (строка, можно прочесть оригинал, нельзя искать)7 JSON (полноценные json-структуры, есть особенности)7 MVA (коллеция uint) 7

Пример индекса bigint id 1 field string name anons Телефон Большой,7 хороший mva json timestamp bool name categories properties updated ivl1 1,455,678 {232:{‘min’: 23,’max’: 67}} 1393241487 0 Телефон 2 3 4 8

Поисковые технологии. Особенности Поисковые технологии. О Real-time обновления update: только атрибуты int, bigint, float, MVA7 insert: все поля, id должно быть уникальным7 replace: все поля, заменять строку7 delete7 alter7 ! indexer --merge main delta: «обновление» дисковых индексов 9

Поисковые технологии. О Работа с RT индексами ATTACH INDEX diskindex TO RTINDEX rtindex7 FLUSH RTINDEX rtindex7 TRUNCATE RTINDEX rtindex 10

Масштабирование Клиент полный индекс полный индекс полный индекс 11 полный индекс

Обновление Клиент полный индекс полный индекс полный индекс replace / alter 12 полный индекс

Масштабирование Клиент Прокси сфинкс Прокси сфинкс кусочек индекса 1 кусочек индекса 1 кусочек индекса 2 13 кусочек индекса 2

Обновление Клиент Прокси сфинкс Прокси сфинкс кусочек индекса 1 кусочек индекса 1 кусочек индекса 2 14 replace / alter кусочек индекса 2

Обновление Клиент Прокси сфинкс Прокси сфинкс кусочек индекса 1 кусочек индекса 1 1 кусочек индекса 2 2 15 replace / alter кусочек индекса 2

Масштабирование # распределяем индекс на 4 сервера7 # делаем два чанка и по два зеркала каждого7 # box1, box2 содержат локальный индекс chunk17 # box3, box4 содержат локальный индекс chunk27 ! # config on box1, box27 agent = box3:9312|box4:9312:chunk27 ! # config on box3, box47 agent = box1:9312|box2:9312:chunk1 16

Поисковые технологии. О Обновления индексов Update - не блокирует индекс, быстрей7 Replace - блокирует индекс на чтение и запись, долгий7 Alter - блокирует индекс на чтение и запись, очень долгий7 Выгодно блокировать только часть распределенного индекса 17

Поисковые технологии. О Клиенты API, клиенты для PHP, Python, Java и др.7 SphinxQL, через mysql адаптер (через IDE не получится) 18

Поисковые технологии. Особенности Поисковые технологии. О SphinxQL клиент SELECT7 select_expr [, select_expr ...]7 FROM index [, index2 ...]7 [WHERE where_condition]7 [GROUP BY {col_name | expr_alias} [, {sol_name | expr_alias}]]7 [WITHIN GROUP ORDER BY {col_name | expr_alias} {ASC | DESC}]7 7 [HAVING having_condition]7 [ORDER [N] BY {col_name | expr_alias} {ASC | DESC} [, ...]]7 [LIMIT [offset,] row_count]7 [OPTION opt_name = opt_value [, ...]] 19

Поисковые технологии. О Некоторые особенности Есть сортировка внутри групп: WITHIN GROUP ORDER BY7 Можно запросить несколько членов группы: GROUP <N> BY7 В select есть функция groupby(), удобна при группировки по mva полям7 В where нельзя использовать OR, но можно использовать в select7 Есть секция OPTION7 Есть транзакции 20

Поисковые технологии. О Функции ABS(), ALL(), ANY(), BIGINT(), BITDOT(), CEIL(), CONTAINS(), COS(), CRC32(), DAY(), DOUBLE(), EXP(), FIBONACCI(), FLOOR(), GEODIST(), GEOPOLY2D(), GREATEST(), IDIV(), IF(), IN(), INDEXOF(), INTEGER(), INTERVAL(), LEAST(), LENGTH(), LN(), LOG10(), LOG2(), MAX(), MIN(), MIN_TOP_SORTVAL(), MIN_TOP_WEIGHT(), MONTH(), NOW(), POLY2D(), POW(), REMAP(), SIN(), SINT(), SQRT(), UINT(), YEAR(), YEARMONTH(), YEARMONTHDAY() 21

Поисковые технологии. О Операторы Арифметические: +, -, *, /, %, DIV, MOD7 Сравнение: <, > <=, >=, =, <>7 Булевые: AND, OR, NOT7 Битовые: &, | 22

Поисковые технологии. Особенности Поисковые технологии. О Полнотекстовый поиск OR: hello | world7 NOT: hello -world; hello !world7 Поля: @title hello @body world; @!(title,body) hello world; @* hello7 Ограничения полей: @body[50] hello; @!title hello world7 Поиск фраз: "hello world"; "hello world"~10; "the world is a wonderful place»/37 Конкретный порядок: aaa << bbb << ccc; ^hello world$7 Точные словоформы: raining =cats and =dogs7 и другие … 23

Поисковые технологии. Особенности Поисковые технологии. О Гео-поиск SELECT id, GEODIST(lat, lng, 40.7, -73.9, {in=degrees, out=feet}) FROM gee7 in = {deg | degrees | rad | radians}7 out = {m | meters | km | kilometers | ft | feet | mi | miles}7 method = {haversine | adaptive} 24

Поисковые технологии. Особенности Поисковые технологии. О Сниппеты mysql> CALL SNIPPETS('красный большой телефон', 'products', 'телефоном красным');7 +---------------------------------------------------------------- +7 | snippet |7 +---------------------------------------------------------------- +7 | <b>красный</b> большой <b>телефон</b> |7 +-----------------------------------------------------------------+ 25

Подсчет слов mysql> CALL KEYWORDS('телефоном', 'products' , 1);7 +--------------------+----------------+-------+--------+7 | tokenized | normalized | docs | hits |7 +--------------------+----------------+-------+--------+7 | телефоном | телефон | 10386 | 58271 |7 +--------------------+----------------+-------+---------+7 1 row in set (0.00 sec) 26

Поисковые технологии. О Другие функции SHOW AGENT STATUS7 SHOW PROFILE7 SHOW INDEX STATUS7 OPTIMIZE INDEX7 SHOW PLAN7 SHOW/DROP/CREATE PLUGINS7 SHOW DATABASES7 ATTACH INDEX7 FLUSH RTINDEX7 …. 27

Поисковые технологии. Особенности Поисковые технологии. О Установка демона Скачать с официального сайта7 Собрать из исходников SVN7 Разные ключики при сборке7 Стандартные пути 28

Поисковые технологии. Особенности Поисковые технологии. О Версии демона Релиз 7 Бета7 Документация 29

Поисковые технологии. О Эксплуатация searchd -c /etc/sphinx.conf7 searchd --stop / --stopwait -c /etc/sphinx.conf7 indexer --rotate --all / indexer --rotate products_plain7 indextool7 watchdog 30

Вопросы? Андрей Борю 31

Add a comment

Related presentations

Related pages

Блог Андрея Борю: марта 2014

Sphinx. настройка, эксплуатация from andreyborue. ... Теги: разработка, sphinx.
Read more

Блог Андрея Борю

Sphinx. настройка, эксплуатация from ... canvas dns doctrine google html5 imagic javascript md5 mssql nginx php soap sphinx xml zend ...
Read more