在Apache Solr中操作copy-field的字段值

时间:2019-09-25 15:09:58

标签: solr

我有一个简单的字符串“ PART_NUMBER”值作为solr中的一个字段。我想添加一个附加字段,将该值放在URL字段中。为此,我创建了一个新的字段类型,字段和副本字段

"add-field-type": {
    "name": "endpoint_url",
    "class": "solr.TextField",
    "positionIncrementGap": "100",
    "analyzer": {
        "tokenizer": {
            "class": "solr.KeywordTokenizerFactory"
        },
        "filters": [
            {
                "class": "solr.PatternReplaceFilterFactory",
                "pattern": "([\\s\\S]*)",
                "replacement": "http://myurl/$1.jpg"
            }
        ]
    }
},
"add-field": {
    "name": "URL",
    "type": "endpoint_url",
    "stored": true,
    "indexed": true
},
"add-copy-field":{ "source":"PART_NUMBER", "dest":"URL" }

您可能已经猜到了,我的查询输出类似于

{
    "id": "1",
    "PART_NUMBER": "ABCD1234",
    "URL": "ABCD1234",
    "_version_": 1645658574812086272
}

因为endpoint_url字段类型仅修改索引。确实,在进行分析时,我得到了

http://myurl/ABCD1234.jpg

我的问题:有什么方法可以应用标记器或过滤器并将其反馈回字段值?返回结果时,我希望使用此输出:

{
    "id": "1",
    "PART_NUMBER": "ABCD1234",
    "URL": "http://myurl/ABCD1234.jpg",
    "_version_": 1645658574812086272
}

在Solr中可以这样做吗?

1 个答案:

答案 0 :(得分:0)

解决方案发布在这里: Custom Solr analyzers not being used during indexing

我需要使用更新处理器才能在分析之前更改字段值。该过程可以在这里找到: https://lucene.apache.org/solr/guide/8_1/update-request-processors.html