Постобработка ответов Solr в шаблонах Velocity путем вызова внешних методов Java

Быстрый контекст приложения в первую очередь.

В настоящее время я использую Solr в автономном режиме для индексирования тысяч текстовых документов. (не совсем текстовые документы).

Один документ имеет следующую структуру:

  • id - уникальный идентификатор файла
  • line_text - текстовые данные
  • file_local_url - путь к каталогу файла
  • line_no - номер строки line_text

Чего я пытаюсь достичь?

После поиска в поле line_text в результате я должен увидеть соответствующие фрагменты текста. Фрагментом текста могут быть строки от (line_no - 3) до (line_no + 3). В настоящее время для поиска я использую встроенный в Solr модуль записи ответов Velocity и шаблоны.

Как я думаю об этом?

Я использую шаблоны Velocity по умолчанию, которые поставляются с Solr. В файле шаблона hit.vm ниже описывается способ получения, обработки и отображения ответов:

#foreach( $fieldName in $doc.fieldNames )
    <tr>
      <th align="right" valign="top" style="field-name">
        $esc.html($fieldName):
      </th>

      <td align="left" valign="top">
        #field($fieldName)
      </td>
    </tr>
#end

Теперь, чтобы получить текст фрагмента, я хотел бы определить внешнюю функцию где-нибудь в классе Java, что-то вроде этого:

public String getSnippet(file_local_url, line_no) 

который вернет фрагмент в формате строки.

Теперь я хочу использовать этот ответ в шаблоне скорости. Там я думаю о чем-то вроде этого:

 ## get the snippet string by calling the external ava function
 #set($snippet = $someClass.getSnippet(#field("file_local_url"), #field("line_no)))

 ## print the snippet
  snippet

(Я не уверен, что это правильный синтаксис.)

Вопросы:

  1. Какой тип файла должен содержать someClass.getSnippet()? Файл Java? Файл класса? Банка?
  2. Где мне хранить этот файл? Как скорость узнает, где найти этот класс?
  3. Использую ли я синтаксис write для вызова метода и использования его результатов в приведенном выше шаблоне Velocity?

Некоторые существующие вопросы по SO, такие как эта, и это дали мне некоторое представление об этом. Но я пока не вижу более широкой картины (особенно вопрос 2 выше).

Пожалуйста, укажите направление.

0 ответов

Другие вопросы по тегам