0

私のsolrスキーマは次のとおりです(重要な部分のみ):

<fieldType name="bagofwords_expertfinding" class="solr.TextField"    positionIncrementGap="100">
  <analyzer type="index">
    <!-- remove letters repeated more than two times -->
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords_en.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PatternReplaceFilterFactory" pattern="^[0-9-/_,\.]+$" replacement="" replace="all"/>
    <filter class="solr.PatternReplaceFilterFactory" pattern="^.*(([aA-zZ])\\2)\\2+.*$" replacement=""/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.LengthFilterFactory" min="3" max="100"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords_en.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PatternReplaceFilterFactory" pattern="^[0-9-/_,\.]+$" replacement="" replace="all"/> 
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.LengthFilterFactory" min="3" max="100"/>
  </analyzer>
</fieldType>
<fieldType name="namedentities_expertfinding" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <!-- remove letters repeated more than two times -->
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\s," replacement=","/>
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern=",\s" replacement=","/>
    <tokenizer class="solr.PatternTokenizerFactory" pattern="," />
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords_en.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PatternReplaceFilterFactory" pattern="^[0-9-/_,\.]+$" replacement="" replace="all"/> 
    <filter class="solr.LengthFilterFactory" min="3" max="100"/>
  </analyzer>
</fieldType>

namedentities では、「ディエゴ アルベルト ミリート」、「ディエゴ アルマンド マラドーナ」などの複数語の用語をインデックスに登録しました。両方のフィールドを検索して、dismax クエリを使用して異なる方法でブーストしようとしています。

しかし、このクエリを試してみてください: localhost:8080/solr/select/?q="diego armando maradona"&defType=dismax&qf=namedentities^100 bagofwords^1&fl=*,score&debugQuery=true&mm=0

solr は何も見つかりません。"記号の正しい使い方を理解していない可能性があります。

これもsolr wikiから与えられたのでわかりません:

「Solr 1.4以前では、基本的にはq.op=ORと等価にしたい場合はmm=0、q.op=ANDと等価にしたい場合はmm=100%に設定する必要があります。3.xとtrunkでは、 mm のデフォルト値は、q.op パラメーターによって決定されます (q.op=AND => mm=100%; q.op=OR => mm=0%). デフォルトの演算子はスキーマによって影響を受けることに注意してください。 xml エントリ。以前のバージョンの Solr では、デフォルト値は 100% です (すべての句が一致する必要があります)"

私のスキーマでは、defaultOperator が OR であることを考えると、mm=0 を設定せずに、デフォルトの mm 値 100 を取得します。

前もって感謝します!

4

1 に答える 1

0

上記のクエリ文字列を引用符で囲むと、フレーズ クエリが強制されます。これは、完全一致のみが考慮されることを意味します。それらを削除して括弧に置き換え、pf および pf2 および pf3 パラメーターを試して、より長い一致フレーズをブーストします。

于 2014-03-24T22:54:17.527 に答える