Урок №19. Поиск. Faker. Sphinx

План:

1) Простой поиск (MySQL).

2) Полнотекстовый поиск (MySQL).

3) Поиск с использованием поисковой системы Sphinx.




Настройки sphinx (/etc/sphinxsearch/sphinx.conf):

source news_content
{
  type          = mysql
  sql_host      = localhost
  sql_user      = yii2user
  sql_pass      = 111111
  sql_db        = yii2advanced
  sql_port      = 3306
  sql_query     = \
  SELECT id, content \
  FROM news
  #sql_query     = \
  #SELECT id, content, status, content as content_attribute \
  #FROM news
  #sql_attr_uint = status
  #sql_attr_string = content_attribute
}
index idx_news_content
{
  source            = news_content
  path              = /var/lib/sphinxsearch/data/test1
  docinfo           = extern
  charset_type      = sbcs
}
searchd
{
  listen            = localhost:9306:mysql41
  log               = /var/log/sphinxsearch/searchd.log
  query_log         = /var/log/sphinxsearch/query.log
  read_timeout      = 5
  max_children      = 30
  pid_file          = /var/run/sphinxsearch/searchd.pid
  max_matches       = 1000
  seamless_rotate   = 1
  preopen_indexes   = 1
  unlink_old        = 1
  binlog_path       = /var/lib/sphinxsearch/data
}

frontend/config/main-local.php:

'components' => [
     'sphinx' => [
        'class' => 'yii\sphinx\Connection',
        'dsn' => 'mysql:host=127.0.0.1;port=9306;dbname=yii2advanced',
        'username' => 'yii2user',
        'password' => '111111',
    ],
    ...
],

Управление sphinx:

$ sudo service sphinxsearch start
$ sudo service sphinxsearch stop
$ sudo indexer --all

Для автоматического обновления индекса sphinx можно настроить задачу в crontab. Запуск crontab (в консоли):

$ sudo crontab -e

Добавить строку:

*/10 * * * * sudo /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all

Этот пример запускает индексатор раз в 10 минут (можно менять время запуска по желанию).

Проверить как и когда запускался cron можно так (в консоли):

$ nano /var/log/syslog

Ссылки:

https://github.com/lukesky1/php-up/releases/tag/1.0.11

yii2-faker extension

MySQL fulltext search

Установка sphinx

Инструкция по установке sphinx (еще одна статья)

yii2-sphinx extension

Полнотекстовый поиск

Релевантность

Sphinx wiki

Ранжирование

Ранжировщики (rankers) в sphinx

https://en.wikipedia.org/wiki/Ranking


Назад