使用REGEX在Solr中使用REGEX保存从字段到CopyField



我使用导入处理程序从MySQL表导入数据。我有一个text类型的msg列。使用Regex,我必须将子字符串保存在复制字段中。

msg: 94eb2c0cb17ef354bb052c57f40crnContent-Type: text/plain; charset=UTF-8rnContent-Transfer-Encoding pnr:986|0978325

预期的solr结果:

{
    "msg_body": "94eb2c0cb17ef354bb052c57f40c\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding pnr:986-0978325",
    "pnr_number": "pnr:986-0978325"
}

我的言论:

(pnr|(P|p)[ _.:,!"'-/$](N|n)[ _.:,!"'-/$](R|r))+[ _.:,!"'-/$]+[0-9]{3}[ _.:,!"'-/$]+[0-9]{7}

请帮助我,因为我是新手Solr

您需要为pnr_number定义自定义字段。使用复制字段将msg_body复制到pnr_number在自定义字段定义中,使用

<filter class="solr.PatternCaptureGroupFilterFactory" pattern="regex goes here" preserve_original="false"/>

由于您使用的是数据导入处理程序,因此有3个选项:

  1. 在DIH定义中使用Regex变压器。
  2. 使用RegexreplaceProcessorFactory Update请求处理器(在SolrConfig.xml)。
  3. 在分析器链中使用正则过滤器

使用前两个选项,正则是在实际索引字段之前提取图案。在最后一个选项中,存储的表示(如果存储该字段)将包含原始的完整字符串,但是索引(可搜索)表示将包含REGEX匹配。

最新更新