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

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

Embed Size (px)

DESCRIPTION

 

Citation preview

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

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

�1

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

Поисковые технологии. О

SphinxСистема полнотекстово поиска7

Милиарды документов7

Высокая скорость поисковых запросов7

Обновление данных в реальном времени7

Масштабируемость (встроенные механизмы шардинга и зеркал)7

Текстовый поиск от 10 до 10 тысяч раз быстрее чем mysql7

Поддержака дополнительных атрибутов для каждой записи и фильтрация по ним

�2

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

Поисковые технологии. О

Источники данных

MySQL, PostgreSQL, MS SQL (on Windows), and ODBC.7

xmlpipe7

tsvpipe (Tab Separated Values)

�3

source mysql7{7 type = ...7 ...7}

source products : mysql7{7 ...7 …7}

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

Поисковые технологии. О Поисковые технологии. Особенности

Индексы

Disk7

Realtime (RT)

�4

index products7{7 type = ...7 ...7}

index products : pr_plain7{7 …7 ...7}

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

Поисковые технологии. О

Дисковые индексы

Строятся индексацией источников данных7

Занимают минимум памяти7

Не могут быть обновлены 7

Могут быть смержены с другим дисковым индексов

�5

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

Поисковые технологии. О

Индексы реального времени

Не использую источников данных7

Могут быть созданы на основе дискового индекса7

Можно добавлять/изменить/удалять строки в реальном времени7

Хранится в памяти (если она есть)7

Пишет бинарные логи

�6

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

Поисковые технологии. О

Поля/атрибуты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

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

Пример индекса

�8

bigint field string mva json timestamp bool

id name anons name categories properties updated ivl1

1 Телефон Большой,7хороший Телефон 1,455,678 {232:{‘min’:

23,’max’: 67}} 1393241487 0

2

3

4

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

Поисковые технологии. О Поисковые технологии. Особенности

Real-time обновленияupdate: только атрибуты int, bigint, float, MVA7

insert: все поля, id должно быть уникальным7

replace: все поля, заменять строку7

delete7

alter7

!

indexer --merge main delta: «обновление» дисковых индексов

�9

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

Поисковые технологии. О

Работа с RT индексами

ATTACH INDEX diskindex TO RTINDEX rtindex7

FLUSH RTINDEX rtindex7

TRUNCATE RTINDEX rtindex

�10

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

Масштабирование

�11

полный индекс

полный индекс

полный индекс

полный индекс

Клиент

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

Обновление

�12

полный индекс

полный индекс

полный индекс

полный индекс

Клиент

replace / alter

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

Масштабирование

�13

кусочек индекса 1

кусочек индекса 1

кусочек индекса 2

кусочек индекса 2

Клиент

Прокси сфинкс Прокси сфинкс

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

Обновление

�14

кусочек индекса 1

кусочек индекса 1

кусочек индекса 2

кусочек индекса 2

Клиент

Прокси сфинкс Прокси сфинкс

replace / alter

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

Обновление

�15

кусочек индекса 1

кусочек индекса 1

кусочек индекса 2

кусочек индекса 2

Клиент

Прокси сфинкс Прокси сфинкс

replace / alter

1 2

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

Масштабирование

�16

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

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

Поисковые технологии. О

Обновления индексов

Update - не блокирует индекс, быстрей7

Replace - блокирует индекс на чтение и запись, долгий7

Alter - блокирует индекс на чтение и запись, очень долгий7

Выгодно блокировать только часть распределенного индекса

�17

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

Поисковые технологии. О

Клиенты

API, клиенты для PHP, Python, Java и др.7

SphinxQL, через mysql адаптер (через IDE не получится)

�18

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

Поисковые технологии. О Поисковые технологии. Особенности

SphinxQL клиент

�19

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}]77 [HAVING having_condition]7 [ORDER [N] BY {col_name | expr_alias} {ASC | DESC} [, ...]]7 [LIMIT [offset,] row_count]7 [OPTION opt_name = opt_value [, ...]]

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

Поисковые технологии. О

Некоторые особенностиЕсть сортировка внутри групп: WITHIN GROUP ORDER BY7

Можно запросить несколько членов группы: GROUP <N> BY7

В select есть функция groupby(), удобна при группировки по mva полям7

В where нельзя использовать OR, но можно использовать в select7

Есть секция OPTION7

Есть транзакции

�20

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

Поисковые технологии. О

Функции

�21

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()

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

Поисковые технологии. О

Операторы

Арифметические: +, -, *, /, %, DIV, MOD7

Сравнение: <, > <=, >=, =, <>7

Булевые: AND, OR, NOT7

Битовые: &, |

�22

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

Поисковые технологии. О Поисковые технологии. Особенности

Полнотекстовый поиск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

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

Поисковые технологии. О Поисковые технологии. Особенности

Гео-поиск

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

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

Поисковые технологии. О Поисковые технологии. Особенности

Сниппеты

�25

mysql> CALL SNIPPETS('красный большой телефон', 'products', 'телефоном красным');7+---------------------------------------------------------------- +7| snippet |7+---------------------------------------------------------------- +7| <b>красный</b> большой <b>телефон</b> |7+-----------------------------------------------------------------+

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

Подсчет слов

�26

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

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

Поисковые технологии. О

Другие функцииSHOW AGENT STATUS7

SHOW PROFILE7

SHOW INDEX STATUS7

OPTIMIZE INDEX7

SHOW PLAN7

SHOW/DROP/CREATE PLUGINS7

SHOW DATABASES7

ATTACH INDEX7

FLUSH RTINDEX7

….

�27

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

Поисковые технологии. О Поисковые технологии. Особенности

Установка демона

Скачать с официального сайта7

Собрать из исходников SVN7

Разные ключики при сборке7

Стандартные пути

�28

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

Поисковые технологии. О Поисковые технологии. Особенности

Версии демона

Релиз 7

Бета7

Документация

�29

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

Поисковые технологии. О

Эксплуатация

searchd -c /etc/sphinx.conf7

searchd --stop / --stopwait -c /etc/sphinx.conf7

indexer --rotate --all / indexer --rotate products_plain7

indextool7

watchdog

�30

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

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

�31