Sphinx
- Универсальная настройка Sphinx для поддержки одновременно нескольких сайтов
- Manticore Search - форк
Примеры
- Пример конфига Dokuwiki - через xmlpipe2
Сниппеты
Переиндексация и перезагрузка демона
- rotate.sh
indexer --rotate --all service sphinxsearch restart
CentOS:
- rotate.sh
service searchd restart
Подключение к Sphinx через MySQL:
- shpinx-connect-mysql.sh
mysql --port=9306 --host=127.0.0.1
Индексы, поиск по индексу, проверка стемминга:
- call-keywords.sql
SHOW TABLES; SELECT * FROM `index` WHERE MATCH('word'); CALL KEYWORDS('word', 'index');
Сниппеты:
- snippets.sql
CALL SNIPPETS('Терминатор 4: да придет спаситель', 'rutracker_rutracker', 'терминатор 4'); +---------------------------------------------------------------------+ | snippet | +---------------------------------------------------------------------+ | <b>Терминатор</b> 4: да придет спаситель | +---------------------------------------------------------------------+
Метаинформация, атрибуты:
- meta.sql
SELECT * FROM rutracker_rutracker WHERE MATCH('терминатор'); ... SHOW META; +---------------+----------------------+ | Variable_name | Value | +---------------+----------------------+ | total | 444 | | total_found | 444 | | time | 0.000 | | keyword[0] | терминатор | | docs[0] | 444 | | hits[0] | 457 | +---------------+----------------------+ DESC rutracker_rutracker; +--------------+-----------+ | Field | Type | +--------------+-----------+ | id | integer | | torrent_name | field | | year | field | | time_stamp | timestamp | +--------------+-----------+
Решения
Гибкость против хрупкости
Помещайте абстракции в текст программы, а подробности - в область метаданных («Программист-прагматик»).
Проблема: необходимость вносить правки в конфигурацию, код поиска, а также в шаблоны при появлении новой поисковой сущности.
Решение: вынос параметров поиска сущностей в конфигурацию, реализация общего шаблона, поиск на основе представления MySQL.