2.4. Поиск по содержимому загруженных файлов
Для иллюстрации возможностей поиска по содержимому загруженных файлов необходимо сначала подключить базовый проект workflow, добавить в проект сущность EBook
, создать и пройти процесс сканирования книги, как это описано в руководстве Подсистема Workflow (см. раздел Дополнительные материалы). Далее в данном разделе предполагается, что в приложении создан экземпляр EBook
и в результате выполнения процесса Book scanning
загружен соответствующий файл с оригиналом книги.
Добавьте в файл fts.xml
проекта следующие элементы:
...
<entity class="com.sample.library.entity.EBook">
<include name="publication.book"/>
<include name="attachments.file"/>
</entity>
<entity class="com.haulmont.workflow.core.entity.CardAttachment" show="false">
<include re=".*"/>
<exclude name="card"/>
<searchables>
searchables.add(entity.card)
</searchables>
</entity>
</entities>
</fts-config>
Для правильного отображения экземпляров EBook
в экране результатов поиска добавьте классу EBook
аннотацию @NamePattern
:
@NamePattern("%s|publication")
public class EBook extends Card {
...
После этого перезапустите сервер приложения. Чтобы переиндексировать имеющиеся в базе данных сущности и файлы в соответствии с новой конфигурацией поиска, откройте в экране JMX Console JMX-бин app-core.fts:type=FtsManager
и вызовите последовательно сначала метод reindexAll()
, а затем processQueue()
. Все вновь добавляемые и изменяемые данные будут индексироваться автоматически, с задержкой, определяемой интервалом вызова назначенного задания, т.е. не более 30 секунд.
В результате, при наличии в базе данных книги с названием Alice’s Adventures
и загруженным оригиналом в формате PDF, результаты поиска строки "alice" выглядят следующим образом:
а результаты поиска строки "rabbit" так: