現在我有一個在下面的格式獲得索引的字段,Solr的分割字符串,並存儲到多個字段建立索引時
「my_field」:」Abc&Deo&Efg」
可以有「N」的「&」分隔的項目數量,是否有任何方法來分割此字段與&並存儲在單獨的字段,而索引在solr中,字段名稱可以是solr中的值本身。
現在我有一個在下面的格式獲得索引的字段,Solr的分割字符串,並存儲到多個字段建立索引時
「my_field」:」Abc&Deo&Efg」
可以有「N」的「&」分隔的項目數量,是否有任何方法來分割此字段與&並存儲在單獨的字段,而索引在solr中,字段名稱可以是solr中的值本身。
你將不得不這樣做的更新鏈。使用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/
是的,你可以做到這一點與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="&"/>
</analyzer>
</fieldType>
所以做了一個快速測試,基本上招可以用分詞做,將被拆分數據一些需要的符號,在你的情況下,它是&符號。
感謝,會讓你知道!反正如何拆分並將其存儲在不同的領域? –
謝謝,我絕對會嘗試你的解決方案,並讓你知道。實際上,我想在不同的字段中存儲由「&」分隔的值 –
這應該是可能的,但您需要使用動態字段,例如:ampfield_ *,其中值是計數,或者說,或者定義模式中的所有字段提前但我不認爲你知道總數的領域。感謝隊友 –
,我只是這樣做的。非常感謝 !!! –