预先打包的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
答案 0 :(得分:0)
我不知道为什么会发生这种情况,但您可以使用CharFilterFactories来实现您的目标。文件引用: -
字符过滤器可以像令牌过滤器一样链接并放置在Tokenizer前面。字符过滤器可以添加,更改或删除字符,同时保留原始字符偏移以支持突出显示等功能。