2017-10-12 3 views
0

で始まる場合、私はSolrの4を使用していますし、私のクエリ文字列が3文字未満を持つ言葉で始まっている場合、私は場所Solrのクエリ文字列が短い単語

<filter class="solr.LengthFilterFactory" min="3" max="99"/> 

の長さフィルターの工場を持つレコードが見つかりませんsolrは結果を返しません。私はLengthFilterFactoryを使用しているので、これが問題であるとは思っていませんでした。ここでの例は以下のとおりです。

タイトルは次のとおりです。「近い将来に...

私はq:the close futureを検索した場合、私はq:In the close futureを検索する場合、Solrには何も
を返さない、Solrには、レコード

を見つけましたタイトル: "私はいくつかの問題を抱えています" 上記と同じです...

私は3c検索するアトラクターは、3文字未満の単語を使用すると、それが失敗する原因になるとは思っていませんでした。多分LengthFilterFactoryはここで問題ではないでしょうか?

INFO: [collection1] webapp=/solr-example path=/select params={mm=100%25&json.nl=flat&fl=id&start=0&sort=date_0_i+desc,hour_0_i+desc&fq=type_s:(1+5+6+8+9+10)&fq=site_i:1&fq=terms_txt:I+have+some+solr+problem&fq=date_in_i:[20050101+TO+*]&fq=date_in_i:[*+TO+20171012]&fq=language_is:0&rows=10&bq=&q=I+have+some+solr+problem&tie=0.1&defType=edismax&omitHeader=true&qf=terms_txt&wt=json} hits=0 status=0 QTime=1 

はここに私のスキーマ怒鳴るです:

は、ここに私のクエリの例です。私はあなたが探しているフィールドのフィールド定義を表示します。誰でも何が間違っているのか分かりませんか?

<fieldType name="text_general_example" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-FoldToASCII.txt"/>   
    <charFilter class="solr.HTMLStripCharFilterFactory"/> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(^|\s)([^\-\_&amp;\s]+([\-\_&amp;]+[^\-\_&amp;\s]*)+)(?=(\s|$))" replacement="$1MжџљМ$2 $2" /> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\bMжџљМ([^\s]*?)\b[\-_&amp;]+" replacement="MжџљМ$1" /> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\bMжџљМ([^\s]*?)\b[\-_&amp;]+" replacement="MжџљМ$1" /> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\bMжџљМ([^\s]*?)\b[\-_&amp;]+" replacement="MжџљМ$1" /> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="MжџљМ" replacement="" /> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(\w)&amp;(\w)" replacement="$1and$2" /> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LengthFilterFactory" min="3" max="99"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\b[\-_]+\b" replacement="" /> 
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-FoldToASCII.txt"/> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(\w)&amp;(\w)" replacement="$1and$2" /> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LengthFilterFactory" min="3" max="99"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> 
    </analyzer> 
</fieldType> 
+0

正確には使用しているクエリですか? – Mysterion

+0

@Mysterion投稿にクエリの例を追加しました。 – offline

答えて

1

クエリの問題は、であるあなたが実際にデフォルトのフィールドは、通常、あなたのsolrconfig.xmlに指定されている次のクエリfield:I defaultField:have defaultField:a ...を取得しますパースした後、

より
field:I have a problem 

を探している場合。 debugQuery

トークンのいくつかが削除されるため、適切な結果が得られないことがあります。適切なクエリを実行するには、二重引用符を使用してクエリを囲む必要があります"

+0

ありがとうございますが、私はフレーズ検索を使いたくないので、muクエリーを二重引用符で囲むことはできません。 solrconfig.xmlのデフォルトのフィールド定義はどこですか?それは見つけられません。 – offline

+0

私はそれを発見し、デフォルトのフィールドを変更することは私の問題を解決するようです。 – offline

関連する問題