Solr拆分字符串并在索引时存储到多个字段中

时间:2016-10-19 06:30:28

标签: solr

现在我有一个以下面的格式编制索引的字段,

“my_field”:”Abc&Deo&Efg”

可以有" n"由"&" 分隔的项目数,是否有任何方法可以将此字段与& 分开并存储在单独的字段中,同时在solr中进行索引,字段名称可以是solr中的值本身。

2 个答案:

答案 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="&amp;"/>
      </analyzer>
    </fieldType>

所以,基本上可以使用tokenizer来完成这个技巧,它会根据你需要的符号来分割数据,就像你的&符号一样。

enter image description here