Regex 如何基于SOLR中的其他字段设置具有布尔值的复制字段?
我定义了一个copyField并将其命名为:“IsIntranet”,我知道我的用户在intranet中使用192.168.*Ip 如果我的正则表达式在IsIntranet copy字段中匹配,我想设置值Regex 如何基于SOLR中的其他字段设置具有布尔值的复制字段?,regex,solr,boolean,Regex,Solr,Boolean,我定义了一个copyField并将其命名为:“IsIntranet”,我知道我的用户在intranet中使用192.168.*Ip 如果我的正则表达式在IsIntranet copy字段中匹配,我想设置值true,如果不匹配,我将false设置为该值 这是我的正则表达式(192\.168\(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 我怎么能做这样的事 如果您需要更多信息,我可以编辑我的问题 谢谢。您似乎正在寻找条件复制字段 您可以通过创建UpdateReques
true
,如果不匹配,我将false
设置为该值
这是我的正则表达式(192\.168\(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
我怎么能做这样的事
如果您需要更多信息,我可以编辑我的问题
谢谢。您似乎正在寻找条件复制字段 您可以通过创建UpdateRequestProcessorFactory的子类来实现这一点。 然后,如果与正则表达式匹配,则可以重写要添加到isIntranet字段的
processAdd
方法
public void processAdd(AddUpdateCommand cmd) throws IOException {
SolrInputDocument doc = cmd.getSolrInputDocument();
Object v = doc.getFieldValue( "ip" );
if( v != null ) {
String regexPattern = "(192\.168\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))"
if( Pattern.matches(regexPattern, v) ) {
doc.addField( "IsIntranet", true );
}
}
super.processAdd(cmd);
}
你可以找到整个例子。但我想在方案中这样做我的问题是什么???这是现实世界的问题