2017-03-01 59 views
1

預打包的WhitespaceTokenizerFactory不像我預期的那樣工作。我能夠通過使用WhitespaceTokenizerFactory和各種PatternReplaceFilterFactory的組合來實現期望的結果,但我很好奇爲什麼\ r \ n被視爲文字字符而不是字符返回和換行符。任何可能提供的指導將不勝感激。Solr WhitespaceTokenizerFactory - r n未被視爲空白?

初始字符串:

Daniel, \r\n\r\n This is a test. 
OR 
Daniel,\r\n\r\nThis is a test. 

Solr的分析:

WT text Daniel, \r\n\r\n This is a test. 
    raw_bytes [44 61 6e 69 65 6c 2c] [5c 72 5c 6e 5c 72 5c 6e] [54 68 69 73] [69 73] [61] [74 65 73 74 2e] 
    start 0 8 17 22 25 27 
    end 7 16 21 24 26 32 
    positionLength 1 1 1 1 1 1 
    type word word word word word word 
    position 1 2 3 4 5 6 

所需的結果:

[Daniel,] [This] [is] [a] [test.] 

Solr的字段類型:

<fieldType name="text_classic" class="solr.TextField" positionIncrementGap="100" multiValued="true"> 
<analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory" rule="java" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory" rule="java" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
</fieldType> 

Solr的字段名稱:

<field name="test_field" type="text_classic" multiValued="true" indexed="true" stored="false"/> 

Solr的版本:

6.2.1

回答

0

我不知道爲什麼會發生完全是,但你可以使用CharFilterFactories實現你在找什麼。來自文檔的報價: -

字符過濾器可以像令牌過濾器一樣鏈接並置於Tokenizer前面。字符過濾器可以添加,更改或刪除字符,同時保留原始字符偏移以支持突出顯示等功能。

+0

謝謝你的幫助! – Daniel