我定義了一個copyField並把它稱爲:「IsIntranet」我使用192.168知道我的用戶在企業內部網·葉如何在基於SOLR中的其他字段的布爾值上設置複製字段?
我想設置值true
如果我正則表達式中IsIntranet匹配複製字段,如果不是我設置false
了這一點。
這是我的正則表達式(192\.168\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))
我怎麼做這樣的事情?
如果您需要更多信息,我可以編輯我的問題。
謝謝。
我定義了一個copyField並把它稱爲:「IsIntranet」我使用192.168知道我的用戶在企業內部網·葉如何在基於SOLR中的其他字段的布爾值上設置複製字段?
我想設置值true
如果我正則表達式中IsIntranet匹配複製字段,如果不是我設置false
了這一點。
這是我的正則表達式(192\.168\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))
我怎麼做這樣的事情?
如果您需要更多信息,我可以編輯我的問題。
謝謝。
看來你正在尋找一個條件copyField。
您可以通過創建UpdateRequestProcessorFactory的子類來完成此操作。 然後,您可以覆蓋processAdd
方法以添加到您的isIntranet字段,如果它匹配正則表達式。
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);
}
你可以找到整個例子here。
但我想在模式 –
中這樣做是不可能的。 –
非常感謝你:) –
我的問題是什麼問題???這是現實世界問題 –