まあ結果は
SELECT * FROM test1 WHERE MATCH('tennis') LIMIT 0,1000 OPTION ...
しかし、そうでない場合はその、ちょうど@変数は、「機能」によって置き換えられている...これだけやる、降順重量で「デフォルト」であり主な理由のようなそのより「SQL 'そう@weightは、代わりGROUPBY()
WEIGHT()
SELECT * FROM test1 WHERE MATCH('tennis') ORDER BY WEIGHT() DESC ...
又は参照@groupについて
SELECT *,WEIGHT() AS m FROM test1 WHERE MATCH('tennis') ORDER BY m DESC ...
され、@countは、COUNT(*)
@distinctあることCOUNT(DISTINCT ...)
、@geodistありますはGEODIST(...)
、@exprは、実際にはequivlentを持っていません。式を直接使用するか、独自のカスタム名前の別名を使用します。
第2の質問は、キンダートリッキー、彼らは本当に '否定的な'重さではありません。 Therはキーワードブースト演算子ですが、これを使用して特に値を下げることはできません。
私はおそらくそれが機能していると思う唯一の方法は、否定一致が特定のフィールドと一致していれば、複雑なランキングのexspressionを構築できるかどうかです。基本的には負の重みとして代わりに、ランキング発現のための特定のフィールドを必要とするので、例示的な目的のために非常に基本的なデモ表現だと、その列
... MATCH('@!(negative) tennis @negative apparel')
... OPTION ranker=expr('SUM(word_count*IF(user_weight=99,-1,1))'), field_weights(negative=99)
を選択するために使用することができ、実際の一つは、おそらく多くのだろう複合体。 99を「負の」乗算のプレースホルダーとして使用しているだけです。 新しいnegative
フィールドを作成する必要があります。これは他のフィールドと重複している可能性があります
ありがとうございます! weight()は正確に私が必要としていたものなので、後処理の追加関連性のあるものに結果を渡すことができました。 これは素晴らしいです! – user2648990