2013-11-29 147 views
0

我遇到了一個問題,我的索引和查詢完全相同,但是沒有返回結果。它似乎失敗了任何長於ENGTF最大長度的單詞。這是我的模式。調試器中的文本匹配,但沒有返回結果

<fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" 
      ignoreCase="true" 
      words="lang/stopwords_en.txt" 
      enablePositionIncrements="true" 
      /> 

    <filter class="solr.LowerCaseFilterFactory"/> 
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" stemEnglishPossessive="0" preserveOriginal="1" types="wdfftypes.txt" protected="protwords.txt"/> 
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
    <filter class="solr.ASCIIFoldingFilterFactory" words="mapping-FoldToASCII.txt"/> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="10" side="front"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
    <filter class="solr.ASCIIFoldingFilterFactory" words="mapping-FoldToASCII.txt"/> 
    </analyzer> 
</fieldType> 

下面是分析儀的屏幕截圖時,「滿意」是投入指數,和「滿意」放入查詢。

enter image description here

任何想法?謝謝

回答

0

一旦明顯的選擇是增加nGram長度限制。你似乎意識到這一選擇,可能認爲這並不理想。

另一種選擇是創建第二個字段以使用nGram搜索,而另一個選項則使用沒有nGram的搜索。對於〔實施例,在某處你schema.xml你可能會看到:

<field name="myCoolNGramField" type="text_en_splitting" indexed="true" stored="false"/> 
<!-- make a new type, text_en_non_ngram, and use it for this new field below. --> 
<field name="myCoolField" type="text_en_non_ngram" indexed="true" stored="false"/> 
<copyField source="myCoolNGramField" dest="myCoolField" /> 
+0

沒錯,這是那種我不得已修復。我試圖避免這種情況,因爲這是一個絕對不應該有必要的解決方法。 – Tanner

+0

這不是一個真正的巨大解決方法。當您希望以兩種不同方式處理輸入時,使用這種常用技術。對於只需要一個簡單n-gram過濾器的人來說,如果它按照您的意願開始匹配整個令牌,他們可能會有些沮喪。 – Kevin

相關問題