UPD. Сам отвечаю на свой вопрос:
1. Если использовать расширенный язык запрос, то там есть такое понятие, как "IDF booster", что собственно и есть вес поискового слова (к сожалению, в ranker expression этот чистый вес использовать нельзя, можно только взять в связке с IDF. для моего случая это не важно, но ниже объяснию когда это может быть проблемой)
Веса выставляются после каждого слова через знак ^:
... where match('(тест^100|тест*^5|*тест*)') ...
2. Пишем собственное ranker expression (формулу, по которой производится ранжирование) и считаем в ней сумму tf_idf (которое является произведением
tf - количества раз, которое встречается поисковое слово в запросе и idf (которое в свою очередь является произведением веса слова, заданного вами в запросе на некий коэффициент)). Важно отметить, что для тест* и *тест* почему-то имеет отрицательное значение (хотя в документации сказано, что idf без учета веса может принимать значения от 0 до 1), по этому в нашем случае берем его абсолютное значение и полностью запрос будет выглядеть так:
select *,weight() from rttest2 where match('(тест^100|тест*^5|*тест*)') option ranker=expr('sum(abs(tf_idf)*1000)');
+------+------------------------------------------+----------+
| id | phrase1 | weight() |
+------+------------------------------------------+----------+
| 1 | очень простой тест | 14423 |
| 4 | тестировщик тестов | 1846 |
| 5 | тестик тестик простой | 1846 |
| 2 | хитрый тестик | 923 |
| 3 | супертестик | 155 |
+------+------------------------------------------+----------+
Теперь обещанная сноска по поводу IDF:
Согласно
этому объяснению автора:
IDF это очередная магическая метрика, которая учитывает «редкость» слова: для суперчастых слов (которые есть в каждом документе) она равна 0, а для уникального слова (1 вхождение в 1 документ во всей коллекции) равна 1.
Т.е. для словоформ одного слова со звездочками и без значения IDF будут равны,
т.е. для слов тест, тест* и *тест* IDF будет практически прямо пропорционален весу, который вы задали в запросе
Но если Вы хотите проделать этот же трюк со словами "это" и "контрвзбзднуть" в варианте запроса "или или", то скорей всего у Вас ничего не получится, так как IDF будет сильно зависить от набора документов, которые у Вас содержаться в индексе. По этому конечно было бы классно, если можно было задавать вес просто конкретному слову, без привязки к idf