Увеличение веса документа в поисковой выдаче

Добрый день

Я использую пользовательский ранкер: ranker=expr(‘‘2000 * bm25f(2.0, 0.85, {docadopt=2, docname=1000, doctext=1})’’), он хорошо справляется с документами, которые необходимо ранжировать по docname. Но плохо справляется с теми документами, которые необходимо ранжировать по docadopt. Если я повышаю приоритет docadopt, то релевантность ухудшается.

Можно ли как-то описать, что если каждое слово из поискового запроса покрывает поле docadopt, то необходимо увеличить вес документа в выборке?

Например: Закон №126 ФЗ “О связи” - docname = “О связи”, docadopt = “Закон №126 ФЗ”

 SELECT ss.docadopt,
       ss.docname,
       ss.weight,
       ss.attrs_clause
FROM public.sphinx_query_params('127.0.0.1', 9306, '
            SELECT
                   attrs.docadopt AS docadopt,
                   attrs.docname AS varchar,
                   weight() AS weight,
                   ((attrs.lastredaction = 1)) AS attrs_clause
            FROM bpas
            WHERE (MATCH(''Закон 126 ФЗ''))
               AND (attrs_clause = 1)
               AND (attrs.baseid IN (''c000000000''))
            GROUP BY attrs.docid
            ORDER BY weight DESC
            LIMIT 20
            OPTION max_matches=2000,
                   index_weights=(c000000000=20),
                   ranker=expr(''2000 * bm25f(2.0, 0.85, {docadopt=2, docname=1000, doctext=1})'')')
    AS ss (docadopt varchar,
           docname varchar,
           weight integer,
           attrs_clause integer)

вы можете попробовать использовать sph04 с кастомными весами полей или exact_hit фактор как sph04 использует Manticore Search Manual: Searching > Sorting and ranking