2014-01-18 44 views
-1

我定義了一個copyField並把它稱爲:「IsIntranet」我使用192.168知道我的用戶在企業內部網·葉如何在基於SOLR中的其他字段的布爾值上設置複製字段?

我想設置值true如果我正則表達式中IsIntranet匹配複製字段,如果不是我設置false了這一點。

這是我的正則表達式(192\.168\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))

我怎麼做這樣的事情?

如果您需要更多信息,我可以編輯我的問題。

謝謝。

+0

我的問題是什麼問題???這是現實世界問題 –

回答

0

看來你正在尋找一個條件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

+0

但我想在模式 –

+0

中這樣做是不可能的。 –

+0

非常感謝你:) –

相關問題