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

Мне нужно установить увеличение поля во время индексации с помощью DataImportHandler. Я пытался сделать что-то вроде этого:

<entity name="places"  
    query="Select id, boost, text from table">
<field name="id"    column="id" />
<field name="boost"     column="boost"  />
<field name="1_text"  column="text"  boost="${boost}" />
</entity>

но это не работает. Это ошибка:

Caused by: java.lang.NumberFormatException: For input string: "${boost}"

Другой подход, который я сделал, - попытаться также использовать скрипт (трансформатор, но я не знаю синтаксиса для установки повышения в поле):

<script><![CDATA[
                function addfield(row){
                    var fieldName = row.get('id') + "_text"
                    row.put(fieldName, row.get('text'));
                    return row;
                }
            ]]></script>

Пожалуйста, у вас есть предложения?


person Dany    schedule 10.02.2014    source источник


Ответы (1)


К сожалению, динамическое усиление для каждого поля в преобразователе не поддерживается, если вы не укажете статическое значение усиления в объекте. Есть способ установить ускорение документа, но это повлияет на все поля в документе, например:

 row.put('$docBoost', row.get('boost'));

Если это не то, что вам нужно, я бы порекомендовал взглянуть на ускорение времени запроса, поскольку вы уже храните поле «увеличение».

person Ion Cojocaru    schedule 10.02.2014
comment
К сожалению, мне нужно установить другое усиление для поля. - person Dany; 10.02.2014