Ranker plugins let you implement a custom ranker that receives all the occurrences of the keywords matched in the document, and computes a WEIGHT()
value. They can be called as follows:
SELECT id, attr1 FROM test WHERE match('hello') OPTION ranker=myranker('option1=1');
The call workflow proceeds as follows:
XXX_init()
is invoked once per query per table, at the very beginning. Several query-wide options are passed to it via aSPH_RANKER_INIT
structure, including the user options strings (for instance, "option1=1" in the example above).XXX_update()
is called multiple times for each matched document, with every matched keyword occurrence provided as its parameter, aSPH_RANKER_HIT
structure. The occurrences within each document are guaranteed to be passed in ascending order ofhit->hit_pos
values.XXX_finalize()
is called once for each matched document when there are no more keyword occurrences. It must return theWEIGHT()
value. This function is the only mandatory one.XXX_deinit()
is invoked once per query, at the very end.