2011-11-26 95 views
6

我在用Solr搜索帶有停用詞的短語時遇到問題。 Solr發送停止詞的結果,這不是我的預期輸出。如何在包含停用詞的短語中停止solr的結果?

我在stopwords.txt文件中增加了一個單詞「test」。 在schema.xml文件,我有一個像

<field name="searchword" type="text" indexed="true" stored="true" /> 

領域我收錄了一些數據,然後試圖在Solr的瀏覽器窗口中搜索如下:搜索內容:「測試」,我沒有得到結果。 然後我又給了一個像這樣的詞組:search data:「test data」我得到了結果。如何避免這種情況?如果它包含停止詞Solr不應該給任何結果。如何在包含停用詞的短語中停止solr的結果?

以下是我使用的字段類型:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    </analyzer> 
    <analyzer type="query">   
     <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" type="phrase"/> 
    </analyzer> 
</fieldType> 

我需要Solr的解決方案,同時我給包含禁用詞短語(測試)

+1

您可以發佈您的schema.xml嗎? – javanna

回答

1

「停止不提供任何結果「單詞是一個在搜索中未被考慮的單詞;這不是一個「停止」或無效的結果。所以你解釋的行爲是正確的:停止詞應該是這樣做的。

在SOLR中,我無法知道每當你使用某個單詞(可能有人有想法?)時,「停止」返回的結果表單。

我能想到的唯一的事情就是: - 不要將查詢發送到SOLR當你看到在查詢:) 這些術語 - 然後對其進行索引中刪除從文件中的條款(例如,使用UpdateRequestProcessor )並使用AND查詢,這樣,只要沒有索引的術語出現在查詢中,您將得到零結果