Multiple/split 单个 Solr 字段的过滤器链

Multiple/split filter chains for a single Solr field

是否可以将 Solr 字段配置为具有 multiple/split 过滤器链?例如,我可以创建一个如下所示的过滤器链吗?:

        StandardTokenizer
                ↓
         LowerCaseFilter
          ↙           ↘
  SynonymnFilter   PhoneticFilter    
        ↓
   NGramFilter

我进行了大量搜索,但没有找到任何以这种方式设置过滤器链的示例。

编辑

我想在单个字段的上下文中执行此操作(而不是使用复制字段对数据进行两次索引)的主要原因是突出显示。如果我使用复制字段 运行 相同数据上的不同过滤器链,我的突出显示结果会像这样返回:

"highlighting":{
  "1234": {
    "firstName_phonetic":["<hl>John</hl>"],
    "firstName_ngram":["<hl>John</hl>"]
  }
}

这使得使用结果变得更加困难,因为使用应用程序需要选择要显示的突出显示字段。理想情况下,我会得到这样的回复:

"highlighting":{
  "1234": {
    "firstName":["<hl>John</hl>"]
  }
} 

使用 copyField 和索引两个不同的字段听起来很合理,每个字段都有自己的链。

但是,我想没有什么能阻止您实现自己的 MyCustomFilter 来满足您的需求,然后将其插入您的 conf。

一个过滤器的输出进入链中的下一个过滤器。不支持 "branching"。

如果您想要自定义过滤器,您将实施此方法。

org.apache.lucene.analysis.TokenStream.incrementToken()

此方法returns 一个布尔值。你可以看一个例子here.

另一种可能的解决方案是使用 copyField 将 firstName_phonetic 和 firstName_ngram 组合成 firstName 并使用 hl.fl=firstName