2016-06-13 89 views
0

我正在建立一個電子商務項目,我正在使用solr搜索引擎。我想根據特定關鍵字進行搜索。如果我輸入「c1234」,它應該顯示所有具有關鍵字「c1234」的文件。它的工作正常。但是,如果我輸入「c12#34」,那麼它也應該只考慮「c1234」。所以問題是我想忽略這裏的哈希標籤。 Solr不應該考慮我的散列標籤,並且它應該在兩種情況下顯示相同的結果。搜索索爾

另一個問題是我想修剪空格。如果我搜索「HP 940」,它應該修剪空白,並顯示類似的結果爲「HP940」。所以我想要顯示有或沒有空白的類似reults。例如,如果我輸入「Hp 940」,則 ,solr應將其視爲「HP940」。所以,問題是修邊的白色空間提前

回答

1

嘗試使用olr.WordDelimiterFilterFactory

測試用例: enter image description here

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true"> 
    <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
     <filter class="solr.WordDelimiterFilterFactory" 
      generateWordParts="1" catenateWords="1" 
      generateNumberParts="1" catenateNumbers="0" splitOnNumerics="1" 
      catenateAll="0" splitOnCaseChange="1" 
      stemEnglishPossessive="1" preserveOriginal="1" /> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    </fieldType> 

要更換你應該使用https://cwiki.apache.org/confluence/display/solr/CharFilterFactories

+0

其中U上述良好的解決方案,但我試着使用它不工作,我想通過修剪白色空間爲這兩種情況得到相同的結果。 –

+0

@VaidehiJariwala確保您爲右側字段類型使用了正確的過濾器.WordDelimiterFilterFactory可在兩個方向上使用空格和空格。參見上面的示例。 – Oyeme

+0

我嘗試使用您爲正確的字段類型提供的確切代碼,但它仍然不適合我。任何解決方案? –

0

爲主題標籤和其他字符

感謝您應該看一看在solr.WordDelimiterFilterFactory這與catenateWords參數或可替代的solr.PatternReplaceCharFilterFactory。

對於像HP 940這樣的詞語,也可以考慮類似dismax處理程序中的短語字段,而不要使用slop。