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
是否可以将 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