2016-08-06 17 views
0

簡略化した例として、 私は2つのフィールド:titlekeywordsを持っています。 私は、次のパラメータsolfのqfは、任意のブーストフィールドを与えません。

QFとedismax使用しています:タイトル+キーワードを^ 2

以前は、それが正常に働いていました。私はsolrにインデックスされた約15Mのレコードを持っています。すべてのレコードは空ではありませんtitleほとんどのレコードHAD空でないkeywords

しかし、最近、私たちはほとんどのレコードのkeywordsを削除することを決めました。その結果、現時点では、非空のkeywordsを持つ1レコード(15Mレコードのうちの1レコード)しかありません。

qfで指定されたkeywords^2ブーストは残念ながら使用できません。そのレコードの

、我々は、たとえば、 "パンツ衣類" をtitle、たとえば、 "良い店"、およびkeywordsを持っています。私は「良い店パンツ」を検索すると今、Solrのマッチングスコアに関係なく、私はqf: titleまたはqf: title keywords^2.5を使用するかどうかのまったく同じです。 (上記の比較では、ソルマッチングのスコアが異なるため、ほとんどのレコードに空でないキーワードが含まれていた場合は、以前と同じように動作していたと思います)。

+0

二つのフィールドの定義は何ですか?そして、あなたは 'debugQuery'の出力のフィールドでヒットしていますか? – MatsLindh

+0

これらは両方とも 'text_general'として定義されています。そして、私はそれをdebugQueryで見ます:ex.'DisjunctionMaxQuery((キーワード:good)^ 3.0 | title:good))'。そして、私は 'keywords'フィールドでのマッチを期待しているレコードに対して、返された結果に示されているように' good'がキーワードフィールドにあることを知っています。 – user2868104

答えて

0

自分の質問に答える。 keywordsが空でないレコードは1つだけです。 solrで使用されるIDF式に基づいて、基本値は1より小さい。前者では、^ 2で値を上げることはまったく役に立たない。 "解決策"は、空でないキーワードでさらにレコードを追加することです。もちろん、これは実際の解決策ではありません。

debugQueryからの出力は、次を参照してください。

0.84748024 = weight(keywords:good in 4161) [], result of: 
    0.84748024 = score(doc=4161,freq=1.0 = termFreq=1.0 
    ), product of: 
     3.0 = boost 
     0.2876821 = idf(docFreq=1, docCount=1) 
     0.9819638 = tfNorm, computed from: 
     1.0 = termFreq=1.0 
     1.2 = parameter k1 
     0.75 = parameter b 
     5.0 = avgFieldLength 
     5.2244897 = fieldLength