Точность поиска (морфология)

Всем здравствуйте. Не совсем понимаю как работает мантикора внутри, т.к. довольно часто встречается неожиданная выдача по запросам.

У меня все работает на официальной библиотеке PHP.
Конфиги индекса такие:

const INDEX_NAME = 'tyres_search';

private array $fields = [
    'name' => ['type' => 'text'],
    'article' => ['type' => 'text'],
    'id_unique' => ['type' => 'string'],
    'id_good_type' => ['type' => 'int'],
    'id_search_category' => ['type' => 'int'],
];

private const SETTINGS = [
    'rt_mem_limit' => '512M',
    'min_infix_len' => 2,
    'morphology' => 'soundex',
    'regexp_filter' => self::REGEXP_FILTERS
];

В индекс в поле name загружаю модели шин с полным наименованием: бренд - модель - параметры и т.д.

И соответственно сами запросы:

Почему мантикора не учитывает порядок букв в слове при запросе и дает весьма хаотичную выдачу?

Далее:

Почему при прошлом запросе мантикора не выдавала пирелли?

Далее все еще страннее:

И наконец полный абсурд на мой взгляд:

Остюда 2 вопроса:

  1. Почему такая странная выдача?)

  2. Как повысить точность выдачи. Но так чтобы в слове были допустимы ошибки и опечатки. т.е. точный поиск по фразе типа
    SELECT * FROM tyres_search WHERE MATCH(‘zshkuds’);
    или подобный не подходит.

вы можете сделать оригинальный запрос, с дополнительным планом запроса, чтобы понять как трансформировался ваши запрос, как описано в документации

set profiling=1;

select * from hn_small where match('dog|cat') limit 0;

show plan;

К сожалению дополнительной ясности это не дало)

Не понимаю почему он по ключевому слову ‘pir’ находит слова которые вообще не имееют к этому отношения.

да не понятно почему не показывает трансформированное дерево

но show meta показывает что у вас для запроса pir ищется слово p60 и матчит документы - наверное это связано с морфологией soundex которую вы используете

Да, вы абсолютно правы.
Я вообще убрал морфологию, подкрутил немного настройки и выдача стала ожидаемой.

private const SETTINGS = [
    'min_word_len' => '3',
    'rt_mem_limit' => '512M',
    'morphology' => 'none',
    'min_prefix_len' => '3',
    'expand_keywords' => '1',
    'regexp_filter' => self::REGEXP_FILTERS
];

Я убил на это 2 дня… :melting_face: