2.4. Поиск по содержимому загруженных файлов
Теперь добавим функциональность загрузки файлов для каждой публикации и их отображение на экране списка сущности BookPublication
.
Для начала необходимо внести изменения в BookPublication
. Добавьте новый атрибут file
, который будет являться ссылкой на сущность FileDescriptor
с отношением много-к-одному. FileDescriptor
- это описатель загруженного файла (не путать с java.io.FileDescriptor
), позволяющий ссылаться на файл из объектов модели данных. После сохранения изменений добавьте новый атрибут к существующему представлению bookPublication.full
и экранам просмотра списка и редактирования сущности BookPublication
с помощью Studio.
Сгенерируйте новые скрипты обновления БД, выполните команду обновления базы данных и перезапустите сервер приложения. При пересоздании базы данных полнотекстовый поиск по умолчанию отключается. Снова включите флажок Value для атрибута Enable в экране JMX Console, выполните индексацию всех файлов, выйдите из системы снова выполните логин.
Так как мы добавили новый атрибут, в таблице публикаций на экране списка сущности BookPublication
теперь появился новый пустой столбец: File. Чтобы его заполнить, откройте экран редактирования строки таблицы, с помощью нового поля File загрузите текстовый файл в систему и нажмите OK. По умолчанию CUBA поддерживает следующие форматы файлов: RTF
, TXT
, DOC
, DOCX
, XLS
, XSLX
, ODT
, ODS
и PDF
.
Новые файлы теперь отображаются в таблице. Внешний вид таблицы можно отредактировать.
Чтобы переиндексировать имеющиеся в базе данных сущности и файлы в соответствии с новой конфигурацией поиска, откройте в экране JMX Console JMX-бин app-core.fts:type=FtsManager
и вызовите последовательно сначала метод reindexAll()
, а затем processQueue()
. Все вновь добавляемые и изменяемые данные будут индексироваться автоматически, с задержкой, определяемой интервалом вызова назначенного задания, т.е. не более 30 секунд.
В результате, полнотекстовый поиск будет выводить все результаты, включая вхождения в содержимом загруженных файлов.
Более подробную информацию о FileStorageAPI
и FileDescriptor
вы можете найти в соответствующих разделах основного руководства.