我试图让 Solr 仅提取格式为 n-nnnnnnn 的票的第二个 7 位数字部分
本来是希望把全票留在一起的。根据文档,带数字的数字应该放在一起,但是在解决了这个问题一段时间并查看了代码之后,我认为情况并非如此。Solr 总是生成两个术语。因此,我想我可以从第二部分获得更好的查询结果,而不是大量匹配 n- 的第一个数字。用 A 代替破折号:
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="\b\d[A](\d\d\d\d\d\d\d)\b" replacement="$1" replace="all"
maxBlockChars="20000"/>
将解析 1A1234567 罚款但是 -\b" replacement="$1" replace="all" maxBlockChars="20000"/>
不会解析 1-1234567
所以看起来只是连字符的问题。我试过 -(escaped) 和 [-] 和 \u002D 和 \x{45} 和 \x045 没有成功。
我试过在它周围放置 char 过滤器:
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping.txt"/>
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="\b\d[-](\d\d\d\d\d\d\d)\b" replacement="$1" replace="all" maxBlockChars="20000"/>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping2.txt"/>
带映射:
“-” => “z”
进而
“z” => “-”
我看起来连字符在 Flex 标记化中被吃掉了,甚至不能用于 char 过滤器。
有没有人在 Solr/Lucene 中使用连字符/破折号取得了更大的成功?谢谢