2011-07-09 18 views
1

私は、関連性/推奨のためにSolr 1.4.1を使用しているサイトを持っています。私はいくつかの場所でブール型のクエリを使用しています。 +(+type:aoh_company +aoh_dictionary_tids:623)のようなクエリを使用していますが、期待される結果が得られますが、結果の順序は任意です。Solrのブールクエリとインデックス時のブーストの組み合わせ

私はインデックス時間の後押しを設定してドキュメントのランキングを制御しようとしていますが、これらのクエリでは無視されているようです。

  1. 17132(1.22)
  2. 17179:結果は(括弧内のインデックス時間ブースト値を有する)をこの順に戻されhttp://localhost:4930/solr/prod/select?rows=5&start=0&q.alt=(type%3Aaoh_company)+(aoh_dictionary_tids%3A623)&q=
  3. 例えば

    • クエリURLであります(1.10)
    • 17184(1.10)明らかに
  • 、一人でブーストをもとに#3-5の前に来るべきではありません#2になります。
  • これはブール型クエリであるため、ランキングに大きな違いはありません。

    <lst name="debug"> 
        <null name="rawquerystring"/> 
        <null name="querystring"/> 
        <str name="parsedquery">+(+type:aoh_company +aoh_dictionary_tids:623)</str> 
        <str name="parsedquery_toString">+(+type:aoh_company +aoh_dictionary_tids:623)</str> 
        <lst name="explain"> 
        <str name="50hves/node/17132"> 
        1.7819747 = (MATCH) sum of: 
         0.9014403 = (MATCH) weight(type:aoh_company in 1805), product of: 
         0.37135038 = queryWeight(type:aoh_company), product of: 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          0.15297863 = queryNorm 
         2.4274657 = (MATCH) fieldWeight(type:aoh_company in 1805), product of: 
          1.0 = tf(termFreq(type:aoh_company)=1) 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          1.0 = fieldNorm(field=type, doc=1805) 
         0.88053435 = (MATCH) weight(aoh_dictionary_tids:623 in 1805), product of: 
         0.9284928 = queryWeight(aoh_dictionary_tids:623), product of: 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.15297863 = queryNorm 
         0.9483481 = (MATCH) fieldWeight(aoh_dictionary_tids:623 in 1805), product of: 
          1.0 = tf(termFreq(aoh_dictionary_tids:623)=1) 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.15625 = fieldNorm(field=aoh_dictionary_tids, doc=1805) 
        </str> 
        <str name="50hves/node/17179"> 
        1.7819747 = (MATCH) sum of: 
         0.9014403 = (MATCH) weight(type:aoh_company in 1896), product of: 
         0.37135038 = queryWeight(type:aoh_company), product of: 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          0.15297863 = queryNorm 
         2.4274657 = (MATCH) fieldWeight(type:aoh_company in 1896), product of: 
          1.0 = tf(termFreq(type:aoh_company)=1) 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          1.0 = fieldNorm(field=type, doc=1896) 
         0.88053435 = (MATCH) weight(aoh_dictionary_tids:623 in 1896), product of: 
         0.9284928 = queryWeight(aoh_dictionary_tids:623), product of: 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.15297863 = queryNorm 
         0.9483481 = (MATCH) fieldWeight(aoh_dictionary_tids:623 in 1896), product of: 
          1.0 = tf(termFreq(aoh_dictionary_tids:623)=1) 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.15625 = fieldNorm(field=aoh_dictionary_tids, doc=1896) 
        </str> 
        <str name="50hves/node/17131"> 
        1.7819747 = (MATCH) sum of: 
         0.9014403 = (MATCH) weight(type:aoh_company in 1905), product of: 
         0.37135038 = queryWeight(type:aoh_company), product of: 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          0.15297863 = queryNorm 
         2.4274657 = (MATCH) fieldWeight(type:aoh_company in 1905), product of: 
          1.0 = tf(termFreq(type:aoh_company)=1) 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          1.0 = fieldNorm(field=type, doc=1905) 
         0.88053435 = (MATCH) weight(aoh_dictionary_tids:623 in 1905), product of: 
         0.9284928 = queryWeight(aoh_dictionary_tids:623), product of: 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.15297863 = queryNorm 
         0.9483481 = (MATCH) fieldWeight(aoh_dictionary_tids:623 in 1905), product of: 
          1.0 = tf(termFreq(aoh_dictionary_tids:623)=1) 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.15625 = fieldNorm(field=aoh_dictionary_tids, doc=1905) 
        </str> 
        <str name="50hves/node/17133"> 
        1.7819747 = (MATCH) sum of: 
         0.9014403 = (MATCH) weight(type:aoh_company in 1906), product of: 
         0.37135038 = queryWeight(type:aoh_company), product of: 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          0.15297863 = queryNorm 
         2.4274657 = (MATCH) fieldWeight(type:aoh_company in 1906), product of: 
          1.0 = tf(termFreq(type:aoh_company)=1) 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          1.0 = fieldNorm(field=type, doc=1906) 
         0.88053435 = (MATCH) weight(aoh_dictionary_tids:623 in 1906), product of: 
         0.9284928 = queryWeight(aoh_dictionary_tids:623), product of: 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.15297863 = queryNorm 
         0.9483481 = (MATCH) fieldWeight(aoh_dictionary_tids:623 in 1906), product of: 
          1.0 = tf(termFreq(aoh_dictionary_tids:623)=1) 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.15625 = fieldNorm(field=aoh_dictionary_tids, doc=1906) 
        </str> 
        <str name="50hves/node/17184"> 
        1.6058679 = (MATCH) sum of: 
         0.9014403 = (MATCH) weight(type:aoh_company in 1892), product of: 
         0.37135038 = queryWeight(type:aoh_company), product of: 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          0.15297863 = queryNorm 
         2.4274657 = (MATCH) fieldWeight(type:aoh_company in 1892), product of: 
          1.0 = tf(termFreq(type:aoh_company)=1) 
          2.4274657 = idf(docFreq=457, maxDocs=1909) 
          1.0 = fieldNorm(field=type, doc=1892) 
         0.7044275 = (MATCH) weight(aoh_dictionary_tids:623 in 1892), product of: 
         0.9284928 = queryWeight(aoh_dictionary_tids:623), product of: 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.15297863 = queryNorm 
         0.7586785 = (MATCH) fieldWeight(aoh_dictionary_tids:623 in 1892), product of: 
          1.0 = tf(termFreq(aoh_dictionary_tids:623)=1) 
          6.069428 = idf(docFreq=11, maxDocs=1909) 
          0.125 = fieldNorm(field=aoh_dictionary_tids, doc=1892) 
        </str> 
        </lst> 
        <str name="QParser">DisMaxQParser</str> 
        <str name="altquerystring">org.apache.lucene.search.BooleanQuery:+type:aoh_company +aoh_dictionary_tids:623</str> 
        <null name="boostfuncs"/> 
        <lst name="timing"> 
        <double name="time">7.0</double> 
        <lst name="prepare"> 
         <double name="time">1.0</double> 
         <lst name="org.apache.solr.handler.component.QueryComponent"> 
         <double name="time">0.0</double> 
         </lst> 
         <lst name="org.apache.solr.handler.component.FacetComponent"> 
         <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.MoreLikeThisComponent"> 
        <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.HighlightComponent"> 
        <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.StatsComponent"> 
        <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.SpellCheckComponent"> 
        <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.DebugComponent"> 
        <double name="time">0.0</double> 
        </lst> 
        </lst> 
        <lst name="process"> 
        <double name="time">6.0</double> 
        <lst name="org.apache.solr.handler.component.QueryComponent"> 
         <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.FacetComponent"> 
         <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.MoreLikeThisComponent"> 
         <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.HighlightComponent"> 
         <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.StatsComponent"> 
         <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.SpellCheckComponent"> 
         <double name="time">0.0</double> 
        </lst> 
        <lst name="org.apache.solr.handler.component.DebugComponent"> 
         <double name="time">6.0</double> 
        </lst> 
        </lst> 
    </lst> 
    

    として:私はそれがhttp://localhost:4930/solr/prod/select?rows=5&start=0&q.alt=(type%3Aaoh_company)+(aoh_dictionary_tids%3A623)&q=&debugQuery=true

    になるようにそれは非常に冗長ですが、ここではそれは、クエリにdebugQuery=trueを追加することにより、上記のクエリをデバッグしようとした出力

    デバッグ

  • 私はそれを読んで、最初の4つの結果は1.7819747、5番目のスコアは1.6058679となり、ブースト値はどこにも表示されないので、彼らはランキング方程式の要素ではないと考えている。

    私は間違っています。 Solrにブーストを考慮させるために必要なことはありますか?
    Solrに格納されているブースト値を確認する方法はありますか?それは私がそれに送る文書の中で正しいように見えますが、保存された価値を見る方法を見つけることができません。

    さらに、ここに私のschema.xmlから関連する部分だ:以下彼の答えで

    <types> 
        <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> 
        <fieldType name="integer" class="solr.IntField" omitNorms="true"/> 
    </types> 
    <fields> 
        <field name="type" type="string" indexed="true" stored="true"/> 
        <field name="aoh_dictionary_tids" type="integer" indexed="true" stored="true" multiValued="true" omitNorms="false"/> 
    </fields> 
    

    は、FYRはブースト値を適用するための規範は、フィールド上で有効にする必要があると述べました。だから私は私の質問ビットを修正したいと思います:

    • は、それが十分に適用するブーストのための照会フィールドのいずれかに有効な規範を持つことですか?
    • フィールドの私のomitNorms="false"は、フィールドタイプのomitNorms="true"を上書きしますか?

    ご協力いただければ幸いです。

    答えて

    0

    あなたは説明の中で強調表示されません。インデクシング時のブースティングは、ある文書のあるフィールドのノルムに適用されます。乗算器のように。

    ノルムを有効にしている場合は、インデックス時にbosst値が使用されます。 DefaultSimilarityとNormsを使用する場合、ノルムは常に類似関数の一部です。質問をフォローアップのための

    編集:

    1. 適用するために、ブーストのために有効な規範を持っているのに十分です。ノルムはインデックス内のフィールドにデータウェイト構造を提供するためです。そして、インデックスの時間ブーストはノルム値に乗算され、ノルムフィールドに保存されます。

    2. フィールド宣言のomitNormsは型定義をオーバーライドします。これはまた、あなたのexplain構造体にも表示されます。 aoh_dictionaryには1に等しくない値があります。ノルムが無効になっている場合は、デフォルトで1が適用されます。

    +0

    ブーストはドキュメント全体に適用されます。規範はフィールド固有ですが、そうですか? – mikl

    +0

    インデックス時のブーストはドキュメント固有のものです。しかし、それは規範が有効になっている文書内のフィールドにのみ適用されます。だから、2つのフィールドA(ノルムを持つ)とB(ノルムを持たない)があってBのみを照会すると、違いは気付かないでしょう。 – fyr

    +0

    さらに、インデックス作成中にフィールド・ブーストを設定する可能性がある場合、これはあなたのsolrライブラリに少し依存します。 – fyr

    関連する問題