我正在使用PatternTokenizerFactory尝试解析输入行。
我的架构如下:
<fieldType name="text_ptn" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="("bbb": ")([[a-zA-Z ]+)" group="2"/>
</analyzer>
</fieldType>
因此,这种模式应该有效:https://regex101.com/r/9Ep6qO/6
根据模式,我试图从“测试”字段('bbb')的特定部分获得价值。正如我现在所理解的,我可以在Solr“test”中搜索doc:“Acc Hs” 但我只能搜索这样的结构:“测试”:“'bbb':'Acc Hs'”
我的解决方案是拆分此输入,然后使用过滤器:
<tokenizer class="solr.PatternTokenizerFactory" pattern="(.*\"bbb\": \")" />
<filter class="solr.PatternCaptureGroupFilterFactory"
pattern="(^[a-zA-Z ]+)"
preserve_original="false"/>
那么,你能解释为什么第一个选项不起作用。(当我把例如group =“1”时没有区别)