2016-10-19 63 views

回答

3

你將不得不這樣做的更新鏈。使用ScriptUpdateProcessor然後寫一些JavaScript來做到這一點

<processor class="solr.StatelessScriptUpdateProcessorFactory"> 
    <str name="script">updateProcessor.js</str> 
</processor> 

在更新處理器腳本(在你的conf目錄):你爲什麼要當你可以簡單的記號化上做到這一點

function processAdd(cmd) { 
     doc = cmd.solrDoc; // org.apache.solr.common.SolrInputDocument 
     field= doc.getFieldValue("my_field"); 

     // tokenize your string here on the & separate then put tokens into new field, which could be a multivalue 
     doc.setField("mySplitField", token); 
    } 

的問題是索引時,'&'然後每個組件都是可搜索的。

下面是更多的一些信息:https://dutchweballiance.nl/techblog/introducing-the-solr-scriptupdateprocessor/

+0

謝謝,我絕對會嘗試你的解決方案,並讓你知道。實際上,我想在不同的字段中存儲由「&」分隔的值 –

+1

這應該是可能的,但您需要使用動態字段,例如:ampfield_ *,其中值是計數,或者說,或者定義模式中的所有字段提前但我不認爲你知道總數的領域。感謝隊友 –

+0

,我只是這樣做的。非常感謝 !!! –

1

是的,你可以做到這一點與Regular Expression Pattern Tokenizer

我加入到SCHEMA.XML

<field name="my_field" type="my_field_type" indexed="true" stored="true" required="true" multiValued="false" /> 
    <fieldType name="my_field_type" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer> 
     <tokenizer class="solr.PatternTokenizerFactory" pattern="&amp;"/> 
     </analyzer> 
    </fieldType> 

所以做了一個快速測試,基本上招可以用分詞做,將被拆分數據一些需要的符號,在你的情況下,它是&符號。

enter image description here

+0

感謝,會讓你知道!反正如何拆分並將其存儲在不同的領域? –