Содержание
- 2. Кто здесь? Слово Sphinx похоже на search Потому что такое же количество букв Бесплатный, открытый поисковой
- 3. Соло на баяне, на тему… Обзор – скучно! Документация – скучно! Внутренняя архитектура – тоже скучно!
- 4. Как забить шуруп микроскопом
- 5. UnFAQ Как иногда можно ускорить индексацию MySQL Как иногда нужно замедлять индексацию Как индексировать результат работы
- 6. 1. Как ускорять индексацию Заставляем протокол сжимать данные mysql_connect_flags=32 До +20% к общему (!) времени на
- 7. 2. Как замедлять индексацию Тормозим выборки Понаехали тут, DB сервер не резиновый! sql_ranged_throttle=100 Тормозим indexer IO
- 8. 3. Как индексировать MySQL SP Опять магические флажки в протоколе: mysql_connect_flags=131074 См. mysql_com.h CLIENT_MULTI_STATEMENT = 65536
- 9. 4. Как бороться с MyISAM locks SELECT * FROM table – это удар в солнечное Понятное
- 10. 5. Как бороться с PgSQL client SELECT * FROM table – это удар в мозг (RAM)
- 11. 6. Как правильно обновляться Sphinx давно и успешно обратно совместим Умеет читать старые конфиги Умеет читать
- 12. 6. Как правильно обновляться Обновить и перезапустить agent searchd(s) Обновить и перезапустить master searchd Обновить indexer
- 13. 7. Как работать со строками… …не имея поддержки строковых атрибутов? А что значит работать? Искать точное
- 14. 7. Как работать со строками… Все, кроме сортировки, можно делать с CRC Коллизии? MD5 + sql_attr_bigint
- 15. 8. Как искать точную форму В случае индексов со стеммингом? 0.9.8 – делаем 2 индекса и…
- 16. 9. Как бустить точное слово В случае prefix/infix индексов? Вариант 1. Магия в запросе highload |
- 17. 10. Как бустить совпадение поля Вариант 1. CRC32 + expr sort $cl->SetSortMode ( SPH_SORT_EXPR, “@weight+IF(fieldcrc=XXX,1,0)” )
- 18. 11. Как эмулировать regex forms Sphinx умеет wordforms Но вы НЕ ХОТИТЕ, чтобы там были regexes
- 19. 11. Как эмулировать regex forms Однако иногда вы таки хотите regexes eeeeeeeek -> eek, hiiiiiiiighload ->
- 20. 12. Как скрещивать ежа и ужа Т.е. одновременно искать по индексам с разными схемами? Минимизация схемы
- 21. 12. Как скрещивать ежа и ужа Поиск по несуществующим полям – вернет ошибку, но Если запрос
- 22. 13. Как делать SQL-style запросы А, главное, зачем? Иногда быстрее, чем база (см. селективность) Иногда удобнее
- 23. 13. Как делать SQL-style запросы Когда можно, отключайте ранжирование $client->SetRankingMode ( SPH_RANK_ NONE ); Используйте ключевые
- 24. Disclaimer Пункт 13 – это и было “вкратце про тюнинг”
- 25. 14. Как искать related документы Серебряной пули нет, только мелкая дробь Можно искать title и использовать
- 26. 14. Как искать related документы Интересные слова поможет выбирать BuildKeywords() – вернет статистику Можно анализировать статистику
- 27. 15. Как делать suggestions Или “когда не хватает aspell” Иногда хочется по локальному словарю Что советовать
- 28. 15. Как делать suggestions Построить личный частотный словарь indexer --buildstops dict.txt 1000000 --buildfreqs Затем искать слова
- 29. 16. Как все это не делать Есть секретный код, привожу PHP вариант (*) или http://sphinxsearch.com/contact.html while
- 30. Вопросы?
- 31. А теперь – бонус-трек Как работает поиск? Для каждого локального индекса Строим список кандидатов Фильтруем (аналог
- 32. Цена булева поиска Построение списка кандидатов 1 ключевое слово – 1+ IO (список документов) Булевы операции
- 33. Цена фильтрации Дефолтный режим хранения, docinfo=extern Атрибуты хранятся в отдельном файле (.spa) Загружаются в RAM при
- 34. Цена ранжирования Прямая – зависит от ранкера SPH_RANK_NONE вообще ничего не стоит SPH_RANK_DEFAULT учитывает позиции слов,
- 35. Цена сортировки Стоимость ~ числу результатов Еще зависит от критерия сортировки Документы придут в порядке @id
- 36. Так оптимизировать-то как? Где можно, ранжируйте попроще Сортировка не по весу? Ранжировать не надо Можно вкомпилировать
- 37. А еще как? Вместо высоко-селективных (“редких”) фильтров – делайте ключевые слова Вместо низко-селективных (“частых”) ключевых слов
- 38. Ну а еще как?! Мульти-запросы Всегда экономит round-trip Иногда оптимизируются внутри Особо частый случай – когда
- 39. Надеюсь, все? Конечно Конечно, НЕТ partitioning, cutoff, max_query_time, block level rejects, index level rejects… consulting (да,
- 41. Скачать презентацию