在Solr的Lucene的连字符/破折号挑战(Challenge with hyphens/dash

2019-08-03 05:38发布

我试图引起Solr中只提取格式类似于正NNNNNNN票的第二七位数部分

本来我希望能保持完整的票一起。 根据与数字文档的数字应保持在一起,但骂个不停一个这个问题一段时间,看代码后,我不认为是这样。 Solr的总是产生两个方面。 因此,而不是大量为正,我想我可以只在第二部分获得更好的查询结果的第一位比赛。 代的一种破折号:

    <charFilter class="solr.PatternReplaceCharFilterFactory"
      pattern="\b\d[A](\d\d\d\d\d\d\d)\b" replacement="$1" replace="all" 
      maxBlockChars="20000"/>

将解析1A1234567罚款,但 - \ B”替换= “$ 1” 替换= “所有” maxBlockChars = “20000”/>

不会解析1-1234567

所以它看起来像只是一个连字符的问题。 我试过 - (逃脱)和[ - ]和\ u002D和\ X {} 45和\ x045没有成功。

我试图把它周围的炭过滤器:

   <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”=> “ - ”

我看起来像连字符在Flex标记化吃起来是不可用的炭过滤器。

有没有人有Solr中/ Lucene的连字符/破折号更大的成功? 谢谢

Answer 1:

如果您的Solr使用Lucene的近期(3.x的+我认为),你会想使用ClassicAnalyzer而非StandardAnalyzer,因为现在StandardAnalyzer始终把连字符作为分隔符。



文章来源: Challenge with hyphens/dashes in Solr Lucene