1

全て:

私がやりたいことは、内容フィールドに「季節」が含まれるドキュメントを高く評価し、タイトル フィールドに「季節」が含まれるドキュメントを厳しく罰し、新しく作成されたドキュメントを後押しすることです。

Dismax(またはeDismax)でそれを行う方法を知りたいですか?ありがとう

4

3 に答える 3

1

qf パラメータをブーストすると、フィールドの値に関係なくフィールドがブーストされます。content フィールドにキーワード「season」を含むドキュメントをブーストするには、代わりに「bq」パラメータを使用します。たとえば。

select?q=*&bq=content:season^50&bq=title:season^0.001

新しく作成されたドキュメントをブーストするには、次のようなブースト関数を使用します

recip(ms(NOW,mydatefield),3.16e-11,1,1)

ここで、mydatefield は、ドキュメントが作成または更新されたときのタイムスタンプを含むフィールドです。

ブースト機能の使用方法の詳細については、こちらを参照してください

于 2015-04-02T15:16:48.720 に答える
0

dismax (または edismax) クエリ パーサーを使用している場合、クエリ フィールドは qf パラメータで指定され、そこにもブースティングが適用されます。たとえば、あなたの場合:

select?q=season&qf=content^1000 title^0.001&defType=dismax

新しく作成されたドキュメントをブーストするには、検索基準に基づいて古いドキュメントのスコアが高い場合にどうするかを指定する必要もあります。スコアが等しい場合、新しいドキュメントが上にある必要があることを意味する場合は、追加します

sort=score desc,created_at desc

フィールド名「created_at」の下に挿入時間を格納していると仮定して、クエリに追加します。

于 2015-04-02T11:22:58.960 に答える