Настройка Sphinx для индексации динамического набора таблиц - PullRequest
2 голосов
/ 21 июля 2010

Я нахожусь в процессе настройки нового многосайтового экземпляра WordPress 3.0 и хотел бы использовать Sphinx на сервере базы данных для активизации поиска основного веб-сайта. В идеале этот основной сайт должен предлагать возможность поиска по своему контенту (сообщениям, страницам, комментариям, профилям участников, обновлениям активности и т. Д.), А также всем остальным сайтам, которые являются частью сети. Поскольку мы будем добавлять новые сайты в сеть на регулярной основе, я хотел бы иметь возможность динамически добавлять эти новые сгенерированные таблицы в файл Sphinx .conf (вместо редактирования файла и повторной индексации каждый раз, когда мы добавляем новый сайт).

К сожалению, MySQL, похоже, не поддерживает подстановочные знаки при указании таблиц в строке запроса. Лучшее решение , с которым я столкнулся для получения динамического набора таблиц, - это grepping , но я почти уверен, что не знаю, как это сделать в файле .conf (если это невозможно с помощью волшебного колдовства) ).

Можно ли динамически указывать таблицы для добавления в индекс Сфинкса? Или это вызовет такие проблемы с производительностью, что я использую не тот инструмент?

Ответы [ 3 ]

0 голосов
/ 22 июля 2010

Вы можете сделать запрос из представления MySQL, которое объединяет множество таблиц. Вам придется пересматривать представление с каждым изменением в списке блогов, но я считаю, что существуют все хуки для его поддержки, и должно быть достаточно просто создать запрос на просмотр.

Большей проблемой может быть попытка найти подходящий уникальный идентификатор записи для сообщений в Сфинксе. Это должен быть прямой INT, но идентификаторы постов из разных блогов будут сталкиваться друг с другом.

0 голосов
/ 24 июля 2010

Я думаю, что вы можете создавать триггеры (INSERT / UPDATE / DELETE) в MySQL для заинтересованных таблиц (например, сообщений, комментариев и т. Д.) И переносить данные в централизованные глобальные таблицы, которые индексируются Sphinx в режиме реального времени.

Дело в том, как вы можете автоматически создавать эти триггеры? Либо вы можете запустить задание cron для поиска новых таблиц в MySQL, либо я считаю, что вы можете написать простой плагин Wordpress, который перехватывает при активации блога.

0 голосов
/ 22 июля 2010

Вместо этого вы можете попытаться динамически изменить файл .conf.

...