2014-02-10 2 views
1

Мне нужно установить усиление поля в индексе с помощью DataImportHandler. Я пытался сделать нечто вроде этого:Solr: Устанавливать увеличение поля в индексном времени с помощью 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}" 

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

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

У вас есть предложения?

ответ

1

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

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

Если это не то, что вам нужно, я бы рекомендовал смотреть на query time boosting, так как вы уже хранить " форсировать ".

+0

К сожалению, мне нужно установить другой импульс для поля – Dany