为什么使用 LowerCaseFilterFactory 后文档字段仍然有大写字符?
Why Document Fields Still Have Uppercase Characters after Using LowerCaseFilterFactory?
我认为分析器应该同时应用索引和搜索过程,对吗?如果为真,为什么在分析器中使用 LowerCaseFilterFactory 过滤器后我的文档字段仍然有大写字符?
我使用 Luke 检查我的文档字段。
这是我的相关代码。
@Indexed
@AnalyzerDef(name = "remarksAnalyzer", tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class) , filters = {
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = {
@Parameter(name = "language", value = "English") }) })
public class Book {
...
@Field(store = Store.YES)
@Analyzer(definition = "remarksAnalyzer")
private String remarks;
...
}
您是否尝试使用小写单词在索引中进行搜索?我很确定它会起作用。
事实是,如果您使用 store=Store.YES,您将在索引中存储未分析的字符串和已分析的标记。例如,这可能允许您使用荧光笔:要获得突出显示的字符串,您需要原始值。
Luke 可能会向您显示存储的值而不是索引的令牌。
我认为分析器应该同时应用索引和搜索过程,对吗?如果为真,为什么在分析器中使用 LowerCaseFilterFactory 过滤器后我的文档字段仍然有大写字符?
我使用 Luke 检查我的文档字段。
这是我的相关代码。
@Indexed
@AnalyzerDef(name = "remarksAnalyzer", tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class) , filters = {
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = {
@Parameter(name = "language", value = "English") }) })
public class Book {
...
@Field(store = Store.YES)
@Analyzer(definition = "remarksAnalyzer")
private String remarks;
...
}
您是否尝试使用小写单词在索引中进行搜索?我很确定它会起作用。
事实是,如果您使用 store=Store.YES,您将在索引中存储未分析的字符串和已分析的标记。例如,这可能允许您使用荧光笔:要获得突出显示的字符串,您需要原始值。
Luke 可能会向您显示存储的值而不是索引的令牌。