2012-04-18 1 views
1

私はより新しい文書を返すように更新したいと思うこの質問にもっと似ています。ドキュメントによると、私はrecip(ms(NOW,mydatefield),3.16e-11,1,1)を私の質問に追加する必要があります。新しい日付のアイテムを追加する適切な方法は何ですか?

しかし、私はmlt.qfまたはbfパラメータのいずれかに追加しようとします。結果はまったく同じです。

これが私のクエリです:

/Solrの/ MLT?

Q = ID:cms.article.137861

& DEFTYPE = edismax

&行

& mlt.fl = series_idに= 3

&インデント=、タグ、タイトル、テキスト

& mlt.qf = show_i Dテキストは^ 1.1タイトル^ 1.1タグは^ 90

&重量= JSON

& FL = URL、タイトル、タグ、django_id、

& BF =レシプ(MS(NOW、PUB_DATE)をcontent_type_id 3.16e-11,1,1)

答えて

1

これはSolrのウィキ(その下から運ばれたが、私はそれがキャッシュされています) 私は、これはあなたが探しているものだと思います。私は、新しいドキュメントのスコアを向上させることができます

は日付によって明示的なソートを行う方法

(関連性スコアが無視されます) は、新しい文書がスコアに影響を与えるためにFunctionQueryを使用し ため大きいインデックスタイムのブーストを使用します日付フィールドに基づいています。 Solr 1.3では、recip(rord(myfield)、1,1000,1000)という形式のものを使用します。 Solr 1.4では、recip(ms(NOW、mydatefield)、3.16e-11,1,1 ) http://lucene.apache.org/solr/api/org/apache/solr/search/function/ReciprocalFloatFunction.html http://lucene.apache.org/solr/api/org/apache/solr/search/BoostQParserPlugin.html 「ipod」のスコアが高いほど新しい商品が追加されたという完全な例は次のとおりです。

http://localhost:8983/solr/select?q= {ブーストB =レシプ(MS(NOW、manufacturedate_dt)、3.16e-11,1,1)!}のiPod 一つは複数の引数にクエリを分解することによって実装を単純化することができる:

http://localhost:8983/solr/select?q= { !boost b = $ dateboost v = $ qq} & dateboost = recip(ms(NOW、producedate_dt)、3.16e-11,1,1)& qq = ipod "q"引数と "dateboost"引数は、検索ハンドラのデフォルトとして指定できるsolrconfig.xmlでは、クライアントは "qq"というユーザーのクエリを渡すだけで済みます。

dismaxクエリなどの別のクエリタイプを追加するには、追加クエリの値が完全なサブクエリであるため、{!querytype}構文を使用できます。あるいは、デフォルトタイプをdismaxに設定するために、boostType paramをboostローカルパラメータで使用することもできます。他のdismaxパラメータは、トップレベルパラメータとして設定することができる。

http://localhost:8983/solr/select?q= {!= $ dateboost V = $ QQ DEFTYPE = dismax Bブースト} & dateboost =レシプ(MS(NOW、manufacturedate_dt)、3.16e-11,1,1)& QF = &テキストPF =テキスト& qq = ipod 過度のメモリ消費を防ぐため、精度を下げることを検討してください。代わりにrecip(ms(NOW/HOUR、mydatefield)、3.16e-11,1,1)を使用します。詳細については、このスレッドを参照してください。

+0

上記スレッドのリンクがありません。 – TheOne

+0

私はすでにそれらのバージョンを試してみました。彼らは私のために同じ正確な結果をもたらす。 – TheOne

0

明らかにあなたの日付フィールドはTrieDateではありません

関連する問題