我已经实现了自己的分析器,QueryParser和PerFieldAnalyzerWrapper以实现ElasticSearch $ {field} .raw功能。除了我在StringField类型上使用通配符等进行测试时,一切似乎都正常。
我了解这是因为这些查询根本不使用分析仪。
在早期版本的lucene中,there was a config option to enable the lowercasing of these queries。
我找不到最新版本7.5.0的操作方法。谁能对此有所启发?
最佳答案
扩展术语由Analyzer.normalize
处理。由于您已经实现了自己的分析器,因此添加标准化方法的实现,该方法通过LowerCaseFilter
运行tokenStream。
它可以很简单:
public class MyAnalyzer extends Analyzer {
protected TokenStreamComponents createComponents(String fieldName) {
//Your createComponents implementation
}
protected TokenStream normalize(String fieldName, TokenStream in) {
return new LowerCaseFilter(in);
}
}