Руководство по использованию Sphinx с PHP и MySQL - PullRequest
25 голосов
/ 18 февраля 2011

Я ищу полное руководство по использованию Sphinx с PHP и MySQL.Мне бы хотелось, чтобы он был немного проще и проще, чем тот, который представлен на сайте.

Я ищу несколько понятий о том, как именно все это работает.

У меня есть сервер с PHP, HTML, другими данными и базой данных MySQL.Как мне настроить Sphinx для поддержки поиска и возвращаемых результатов?

Я хотел бы иметь возможность передавать условия поиска в мой PHP-скрипт, чтобы он имел дело со Sphinx и возвращал данные.

PS Я также открыт для предложений относительно любых других альтернатив Сфинксу.

Ответы [ 3 ]

8 голосов
/ 05 октября 2016

Я наткнулся на этот пост, но не нашел ответа, который хотел увидеть.Вот мое краткое руководство:

1.Установите Sphinx

На Mac с Homebrew:

brew install sphinx

В Amazon Linux (CentOS) с yum:

yum install sphinx

2.Создать конфигурацию Sphinx

Sphinx поставляется с шаблоном конфигурации.Найдите файл sphinx.conf.dist в каталоге config:

На Mac, установленном с Homebrew:

/usr/local/Cellar/sphinx/<sphinx version>/etc

На Amazon Linux, установленном с yum:

/etc/sphinx

Itэто довольно просто, но может содержать слишком много настроек для новичка.В таком случае вы можете использовать эту простую конфигурацию:

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 daemon

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.Индекс актуальности

Для поддержания индекса актуальности можно использовать два индекса:

  1. Основной индекс, который обновляется не часто (раз в неделю, месяци т. д.)
  2. И дельта-индекс, который обновляется часто (каждый час, 5 минут и т. д.)

Каждый раз, когда дельта-индекс переиндексируется, он объединяется с основным индексом

Перейдите по этой ссылке http://www.sphinxconsultant.com/sphinx-search-delta-indexing/, чтобы узнать больше об этом подходе.

Ссылки, которые я нашел полезными:

3 голосов
/ 17 августа 2011

Я не слишком уверен в хорошем руководстве, но вот мои шаги.

a) Скачать и установить это довольно просто

b) Создайте свой первый индекс - вам нужен источникрасположение данной конфигурации очень хорошее, помните, что вы можете использовать первичный источник для настройки всех основных областей, а затем другие источники исходят из этого.Каждый источник должен начинаться с первичного ключа, и я считаю, что лучше всего использовать key_id AS id

c) Проверить индексирование с помощью поиска

d) Запустить демона поиска для sphinx - searchd thisэто то, к чему будет подключаться php и как он будет получать ваши результаты.

e) Создайте функцию для поиска по всем индексам, передаваемым в индексе, который вы хотите найти, и он будет возвращать идентификаторы в массиве, который соответствует вашему поиску

f) Создайте дельту и обновления.

Работа выполнена - форум sphinx очень приятный и должен предоставить вам, если вам нужна помощь.Ричард

0 голосов
/ 04 июля 2016

Взгляните на Расширения поисковых систем на php.net: http://php.net/manual/en/refs.search.php.

...