Mysql
 sql >> база данни >  >> RDS >> Mysql

Ръководство за използване на Sphinx с PHP и MySQL

Попаднах на тази публикация, но не намерих отговор, който исках да видя. Ето моето ръководство за бързо начало:

1. Инсталирайте Сфинкса

На 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. Поддържайте актуална индекса

За да поддържате актуален индекс, можете да използвате два индекса:

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

Всеки път, когато делта индексът се преиндексира, той се слива с основния индекс

Следвайте тази връзка http://www.sphinxconsultant.com/sphinx-search-delta -индексиране/ за да прочетете повече за този подход.

Връзки, които намерих за полезни:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Не може да се използва SIGNAL в Trigger

  2. Spring, Hibernate, Blob мързеливо зареждане

  3. COUNT(id) срещу COUNT(*) в MySQL

  4. Някой е хакнал моята база данни - как?

  5. Изберете най-високите 3 резултата всеки ден за всеки потребител