Ответ 1
Здесь - очень хороший учебник Sphinx от IBM.
Я ищу полное руководство по использованию Sphinx с PHP и MySQL. Я бы хотел, чтобы он был немного проще и удобнее, чем тот, который был представлен на сайте.
Я ищу несколько концепций о том, как именно все это работает.
У меня есть сервер с PHP, HTML, другие данные и база данных MySQL. Как я могу настроить Sphinx для поиска и возврата результатов?
Я хотел бы передать свои поисковые запросы на свой PHP script и иметь дело с Sphinx и возвращать данные.
P.S. Я также открыт для предложения относительно любых других альтернатив Сфинксу.
Здесь - очень хороший учебник Sphinx от IBM.
Я столкнулся с этим сообщением, но не нашел ответа, который хотел увидеть. Итак, вот мое краткое руководство:
1. Установить Sphinx
На Mac с Homebrew:
brew install sphinx
На Amazon Linux (CentOS) с yum:
yum install sphinx
2. Создать конфигурацию Sphinx
Sphinx поставляется с шаблоном конфигурации. Найдите sphinx.conf.dist в каталоге configs:
В Mac установлен с Homebrew:
/usr/local/Cellar/sphinx/<sphinx version>/etc
На Amazon Linux установлена с yum:
/etc/sphinx
Это довольно просто, но может содержать слишком много настроек для новичков. В таком случае вы можете использовать эту простую конфигурацию:
source TestSource {
type = mysql
sql_host = <host>
sql_user = <user>
sql_pass = <password>
sql_db = <db>
sql_query_range = select min(id), max(id) from TestTable
sql_range_step = 2048
sql_query = select id, some_info from TestTable\
where id >= $start and id <= $end
}
index TestIndex {
source = TestSource
path = /var/lib/sphinx/test-index
min_word_len = 3
min_infix_len = 3
}
searchd {
log = /var/log/sphinx/searchd.log
query_log = /var/log/sphinx/query.log
pid_file = /var/run/searchd.pid
max_matches = 200
listen = localhost:9312
}
Я добавил параметр max_matches в эту конфигурацию, потому что мой первый вопрос после того, как я получил все, что работал, "Почему у меня всегда получается только 20 результатов поиска?". С max_matches вы можете установить предел для результатов поиска.
3. Создать индекс с помощью индексатора
indexer --all
4. Запустить демон Sphinx
sudo searchd -c /path/to/config/sphinx.conf
5. Установка расширения PHP Sphinx
На Mac с Homebrew:
brew install homebrew/php/php56-sphinx
На Amazon Linux с yum:
yum install libsphinxclient
pecl install sphinx
6. Запросите свой индекс из PHP
$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);
$result = $index->query('some search term', 'TestIndex');
print_r($result);
В случае возникновения каких-либо ошибок вы можете получить дополнительную информацию по следующему методу:
$index->getLastError();
7. Сохранять актуальный индекс
Чтобы поддерживать обновленный индекс, вы можете использовать два индекса:
Каждый раз, когда индекс дельта повторно индексируется, он объединяется с основным индексом
Следуйте по этой ссылке http://www.sphinxconsultant.com/sphinx-search-delta-indexing/, чтобы узнать больше об этом подходе.
Ссылки Я нашел полезным:
Я не слишком уверен в хорошем руководстве, но вот мои шаги.
a) Загрузите и установите его довольно просто.
b) Создайте свой первый индекс - вам нужен источник, в котором данная конфигурация очень хорошая, помните, что вы можете использовать первичный источник для настройки всех основных областей, а затем из него вытекают другие источники. Каждый источник должен начинаться с первичного ключа, и я считаю, что он лучше всего работает с key_id AS id
c) Протестируйте свой индекс, используя поиск
d) Начните свой демон поиска для sphinx - searchd. Это то, с чем php будет подключаться и как он получит ваши результаты.
e) Сделайте функцию поиска всех индексов, проходящих в индексе, который вы хотите выполнить, и он вернет идентификаторы в массиве, который соответствует вашему поиску.
f) Сделайте дельту и обновления.
Работа выполнена - форум sphinx очень приятный и должен предоставить вам, если вам нужна помощь. Ричард
Взгляните на Расширения поисковой системы на php.net: http://php.net/manual/en/refs.search.php.