现在我有一个以下面的格式编制索引的字段,
“my_field”:”Abc&Deo&Efg”
可以有" n"由"&" 分隔的项目数,是否有任何方法可以将此字段与& 分开并存储在单独的字段中,同时在solr中进行索引,字段名称可以是solr中的值本身。
答案 0 :(得分: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);
}
问题是,当您可以简单地对“&#39;&amp;”进行标记时,您希望这样做?索引时,每个组件都是可搜索的。
以下是一些信息:https://dutchweballiance.nl/techblog/introducing-the-solr-scriptupdateprocessor/
答案 1 :(得分: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="&"/>
</analyzer>
</fieldType>
所以,基本上可以使用tokenizer来完成这个技巧,它会根据你需要的符号来分割数据,就像你的&符号一样。