Плагины ранжирования

Плагины ранжирования позволяют реализовать пользовательский ранжировщик, который получает все вхождения совпавших ключевых слов в документе и вычисляет значение WEIGHT(). Они могут вызываться следующим образом:

SELECT id, attr1 FROM test WHERE match('hello') OPTION ranker=myranker('option1=1');

Последовательность вызовов происходит следующим образом:

  1. XXX_init() вызывается один раз на запрос для каждой таблицы, в самом начале. Ему передаются несколько опций, действующих на весь запрос, через структуру SPH_RANKER_INIT, включая строки пользовательских опций (например, "option1=1" в приведённом выше примере).
  2. XXX_update() вызывается несколько раз для каждого совпавшего документа, при этом каждый раз передаётся в качестве параметра вхождение ключевого слова — структура SPH_RANKER_HIT. Вхождения внутри каждого документа гарантированно передаются в порядке возрастания значений hit->hit_pos.
  3. XXX_finalize() вызывается один раз для каждого совпавшего документа, когда больше нет вхождений ключевых слов. Она должна вернуть значение WEIGHT(). Эта функция является единственной обязательной.
  4. XXX_deinit() вызывается один раз на запрос, в самом конце.
Last modified: August 28, 2025