Solr WhitespaceTokenizerFactory - \ r \ n不被视为空白?

时间:2017-03-01 14:57:07

标签: java solr

预先打包的WhitespaceTokenizerFactory没有像我预期的那样发挥作用。我可以通过使用WhitespaceTokenizerFactory和各种PatternReplaceFilterFactory的组合来实现所需的结果,但我很好奇为什么\ 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

1 个答案:

答案 0 :(得分:0)

我不知道为什么会发生这种情况,但您可以使用CharFilterFactories来实现您的目标。文件引用: -

  

字符过滤器可以像令牌过滤器一样链接并放置在Tokenizer前面。字符过滤器可以添加,更改或删除字符,同时保留原始字符偏移以支持突出显示等功能。