Эти последние несколько дней я построил двигатель полнотекстового поиска для нескольких сайтов и просто хотел поделиться, как легко можно иметь несколько экземпляров Сфинкс Поиск работает на том же сервере. В данной статье предполагается, что у вас уже есть Сфинкс установленные в вашей системе. Если этого не сделать, пойти проверить сайт Сфинкса поиск, используя ваш любимый поисковик.
Получение права бизнеса, на моем сервере у меня уже был Сфинкс баллотироваться на другой сайт и не возиться с установкой, что на всех. Мой клиент хотел позже иметь возможность добавлять на другую установку поиска Sphinx так что я решил поставить все необходимые файлы в / домашние каталоги, которые использовались для сайтов.
В этой установке мы будем иметь 3 сайтов:
example1.com example2.com example3.com
/var/www/example1.com/web /var/www/example2.com/web /var/www/example3.com/web
/var/www/example1.com/etc
/sphinxsearch/ и будет называться sphinx.conf. Ниже приведен пример файла конфигурации для sphinx.conf.source example1com { type = mysql sql_host = localhost sql_user = example1 sql_pass = 3x4mp13! sql_db = example1 sql_port = 3306 sql_query_range = SELECT MIN(id), MAX(id) FROM articles sql_range_step = 128 sql_query = SELECT id, title, text, description, FROM stories WHERE id>=$start AND id<=$end } index example1com { source = example1com path = /home/example1.com/web/sphinx/sphinx morphology = stem_en min_word_len = 3 min_prefix_len = 0 } searchd { port = 3310 log = /home/example1.com/web/logging/searchd.log query_log = /home/example1.com/web/logging/query.log pid_file = /home/example1.com/web/logging/searchd.pid max_matches = 10000 }
Обратите внимание, как порт под searchd раздел 3310! В нашей следующей установки мы будем использовать другой порт. Это пример конфигурационного файла, который будет сидеть в /var/www/example1.com/
etc/sphinx.conf. Мы будем индексируется таблица называется этажей в example1 базе данных как пользователь с полномочиями example1 и пароль 3x4mp13!. Наши поля поиска будет заголовок, текст и описание. Конечно, Вы можете добавить на столбцы, которые нужно уметь искать. Для других примеров example2 и пример3 вы можете скопировать файл и изменить все к example1 example2 и так далее для других.
Теперь все файлы конфигурации на месте убедиться, что все они имеют различные номера портов. В example1, в конфигурации выше, мы пользовательский порт 3310 так в example2 мы хотели бы использовать 3311 и 3312 в пример3.
Напомним и сделать его более понятным, мы имеем 3 сайтов: example1.com, example2.com и example3.com. Все они имеют свои собственный конфигурационный файл сфинкса настроен на сайт, который рассматривается использование sphinx_search / и т.д. в веб-каталог.
Теперь нам нужно запустить индексатор каждый сайт и начать Searchd навсегда Например сайта.Проиндексированных Сфинкс поиска поставят индексы в каталоге sphinx_search или там, где вы указали в файле конфигурации. Для индекса example1.com выполните следующую команду:
indexer --config /home/example1.com/web/sphinx/etc/sphinx.conf --all
searchd --config /home/example1.com/web/sphinx/etc/sphinx.conf
Теперь я также даст фрагмент например PHP, что покажет, как подключиться к разных инстанциях.
$sphinx = new SphinxClient(); $sphinx->SetServer('localhost', 3310); $sphinx->SetMatchMode( SPH_MATCH_ANY ); $sphinx->SetSortMode( SPH_SORT_RELEVANCE ); $result = $sphinx->Query('Breaking News', 'example1com');
Приведенный выше код PHP запускает новый экземпляр использованием Sphinx API, которые можно получить на их сайте. Мы говорим, что Сфинкс API наших SearchD работает на локальном порту 3310. Потом, когда мы запрашиваем Сфинкс В ней мы указываем запрос, а затем имя индекса которых мы дали ему ранее установкам в конфигурационном файле. Теперь например2 пример3 и мы делаем то же самое, но мы изменили номер порта и в функции запроса мы изменим второй параметр в соответствующий указатель.
Эта модель также будет работать на том же месте в 3 различных областях. Если вам нужно искать разные таблицы, которые не связаны все, что вам нужно сделать, это есть 3 различных конфигурационных файлов и 3 различных каталогов и различных портов.В вас код, который Вы бы просто открыть API в различные порты, что у вас есть таблицы для.
Ссылки на ресурсы:
Просмотров: 4031