Манипулировать значением поля copy-field в Apache Solr - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть простое строковое значение "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 голосов
/ 25 сентября 2019

Решение было размещено здесь: Пользовательские анализаторы Solr не используются во время индексации

Мне нужно использовать процессоры обновления, чтобы изменить значение поля перед анализом.Процесс можно найти здесь: https://lucene.apache.org/solr/guide/8_1/update-request-processors.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...