我有以下配置:
@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并看到以下内容:
只有500
和42
令牌,其中没有500-42
为什么?
答案 0 :(得分:2)
您的WordDelimiterFilterFactory
仅适用于提供给它的令牌,可能不是原始文本。
在你的情况下,你使用StandardTokenizer
,所以当WordDelimiterFilterFactory开始处理字符串时,它已被分成两个标记(500
和42
)。