为什么preserveOriginal不能像java doc中描述的那样工作?

时间:2017-09-21 09:04:31

标签: java lucene full-text-search hibernate-search

我有以下配置:

@AnalyzerDef(name = "autocompleteNGramAnalyzer",

        tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),

        filters = {

                @TokenFilterDef(factory = WordDelimiterFilterFactory.class,
                        params = @Parameter(name = "preserveOriginal", value = "1"))

preserveOriginal doc:

  

/ ** *原始单词被保留并添加到子词中   list(默认为false)*

*" 500-42" => " 500" " 42"   " 500-42" * /

根据这个,我添加了以下词:

  

500-42

我重建索引,重新打开Luke并看到以下内容:

enter image description here

只有50042令牌,其中没有500-42

为什么?

1 个答案:

答案 0 :(得分:2)

您的WordDelimiterFilterFactory仅适用于提供给它的令牌,可能不是原始文本。

在你的情况下,你使用StandardTokenizer,所以当WordDelimiterFilterFactory开始处理字符串时,它已被分成两个标记(50042)。