Добрый день!
Недавно перешёл со сфинкса на мантикору. Столкнулся с тем, что при сортировке по любому из integer полей индекса запрос выполняется около 2 минут, а если не указывать сортировку в запросе, то несколько секунд (131 секунда и 5 секунд).
С мантикорой работаю через manticoresearch-php.
Изначально создаю RT таблицу с такими полями
[
'id' => ['type' => 'bigint'],
'article_id' => ['type' => 'bigint'],
'journal_id' => ['type' => 'bigint'],
'publisher_id' => ['type' => 'bigint'],
'name' => ['type' => 'text'],
'authors' => ['type' => 'text'],
'published_int' => ['type' => 'integer'],
'year' => ['type' => 'integer'],
'subjects' => ['type' => 'json'],
'countries' => ['type' => 'json'],
]
и опциями
[
'min_infix_len' => 2,
'min_word_len' => 1
]
В таблице примерно 100 миллионов записей, всё находится на одном сервере.
Запрос такой
SELECT article_id, name, WEIGHT() AS w
FROM articles
WHERE MATCH('@(name,authors) cobalt')
ORDER BY
published_int DESC,
article_id DESC
LIMIT 25
OFFSET 0
OPTION MAX_MATCHES=200
соответственно, если убираю
ORDER BY
published_int DESC,
article_id DESC
то всё работает достаточно быстро.