Как настроить поиск sphinx, чтоб не учитывался порядок слов?

Для настройки поиска sphinx в Yii так, чтобы не учитывался порядок слов, вам потребуется внести изменения в конфигурационный файл Sphinx и настроить соответствующие параметры поиска в Yii. Это можно сделать следующим образом:

1. Установите Sphinx на свой сервер и настройте его для индексации данных. Sphinx можно установить с помощью apt-get (для Ubuntu) или скачать с официального сайта Sphinx.

2. Создайте индекс для поиска в Sphinx. Это можно сделать с помощью конфигурационного файла sphinx.conf. В конфигурационном файле укажите параметры для вашего индекса, такие как источники данных, поля для поиска и параметры сортировки. Обратите особое внимание на настройку параметра morphology. Этот параметр указывает Sphinx на использование алгоритма обратного индексирования, который обеспечивает возможность поиска без учета порядка слов. Примените свои настройки в sphinx.conf и выполните индексацию данных с помощью команды "indexer".

3. В Yii настройте параметры поиска в конфигурационном файле main.php. Найдите раздел 'components' и добавьте новую конфигурацию для компонента 'sphinx'. Укажите параметры для подключения к серверу Sphinx, такие как host и port. Также укажите имя индекса, который вы создали на предыдущем шаге.

Пример конфигурации компонента 'sphinx' в конфигурационном файле main.php:

'components' => [
    'sphinx' => [
        'class' => 'yiisphinxConnection',
        'dsn' => 'mysql:host=localhost;port=9306;',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
        'schemaMap' => [
            'mysql' => [
                'class' => 'yiisphinxSchema',
                'defaultSchema' => 'your_schema',
            ],
        ],
    ],
],

4. В вашем коде в(Yii), вы можете использовать Yii Query Builder для создания запросов к поисковому движку Sphinx. Ниже приведен пример использования Query Builder для выполнения поискового запроса к Sphinx:

$connection = Yii::$app->sphinx;
$query = $connection->createCommand()
    ->select('*')
    ->from('your_index')
    ->match('your_keyword')
    ->limit(10);

$results = $query->queryAll();

В этом примере мы создаем экземпляр Sphinx Connection из компонента sphinx в Yii и используем Query Builder для сборки запроса SELECT * FROM your_index WHERE MATCH('your_keyword') LIMIT 10. Затем мы выполняем запрос и получаем результаты.

Теперь вы настроили поиск sphinx в Yii так, чтобы он не учитывал порядок слов. Sphinx будет искать все вхождения заданных ключевых слов в вашем индексе независимо от их порядка.