如何使Solr识别同义词之前的任何数字?例如#摩尔为#M(反之亦然)

时间:2018-11-02 17:27:56

标签: solr lucene

我需要Solr才能在搜索时将#摩尔识别为#M(反之亦然),并将#Normal识别为#N(反之亦然)。

我有很多文件名称中包含6摩尔,1摩尔或0.5摩尔,但是很多时候这些文件被写为6M或1M或0.5M。我希望Solr能够在搜索时将#摩尔识别为#M(反之亦然),除了可能有多个数字(例如12M)或十进制(例如0.1M)之外。

无法弄清楚如何使用同义词或其他任何方法。 Solr版本是6.2.1

1 个答案:

答案 0 :(得分:3)

为此,我可能会在您的分析仪中添加一个PatternReplaceCharFilter

类似的东西:

<analyzer>
  <charFilter class="solr.PatternReplaceCharFilterFactory"
         pattern="(\d+(.\d+)?)M" replacement="$1 Molar"/>
  <tokenizer ...
</analyzer>

CharFilters在令牌化发生之前对输入进行预处理,因此您不必担心跨多个术语的模式(就像使用PatternReplace令牌过滤器时那样)或降低大小写,以防您也遇到了麻烦。