我正在使用导入处理程序从mysql表导入数据。我有一个msg
列text
。使用正则表达式,我必须在副本字段中保存子字符串。
msg: 94eb2c0cb17ef354bb052c57f40c\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-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的新手
答案 0 :(得分:1)
您需要为pnr_number定义自定义字段。 使用copyField将msg_body复制到pnr_number 在自定义字段定义中,使用
<filter class="solr.PatternCaptureGroupFilterFactory" pattern="regex goes here" preserve_original="false"/>
答案 1 :(得分:1)
由于您使用的是数据导入处理程序,因此您有3个选项:
使用前两个选项,正则表达式将在字段实际编入索引之前提取模式。在最后一个选项中,存储的表示(如果存储字段)将包含原始的完整字符串,但索引(可搜索)表示将包含正则表达式匹配。