好吧,结果是“默认”的重量下降,所以就这样做......
SELECT * FROM test1 WHERE MATCH('tennis') LIMIT 0,1000 OPTION ...
但除此之外,它,只是 @ 变量,被“函数”取代,主要是因为它更像“SQL”。所以@weight是WEIGHT()
SELECT * FROM test1 WHERE MATCH('tennis') ORDER BY WEIGHT() DESC ...
或者
SELECT *,WEIGHT() AS m FROM test1 WHERE MATCH('tennis') ORDER BY m DESC ...
作为参考,@group是, @count 是,@distinct 是,@geodist是,@ expr并没有真正的等价物,要么直接使用表达式,要么使用您自己的自定义命名别名。GROUPBY()
COUNT(*)
COUNT(DISTINCT ...)
GEODIST(...)
至于第二个问题。有点棘手,它们并不是真正的“负”权重。Ther 是一个关键字 boost 运算符,但目前还不能使用它来专门贬值。
我认为它可能起作用的唯一方法是,如果负匹配是针对特定领域的,则可以建立一个复杂的排名表达式。基本上作为负权重,需要一个特定字段作为排名表达式,因此可以用来选择该列
... MATCH('@!(negative) tennis @negative apparel')
... OPTION ranker=expr('SUM(word_count*IF(user_weight=99,-1,1))'), field_weights(negative=99)
这是一个非常基本的演示表达式,用于说明目的,真实的可能会复杂得多。它只是显示使用 99 作为“负”乘法的占位符。需要negative
创建新字段,这可能只是其他字段的副本