我已经实现了自己的分析器,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);
    }
}

10-07 18:25