3.4. Uploaded Files Content Search

Now we need to provide the possibility of file upload for each book publication and to add uploaded files to the BookPublication browse screen.

Let us customize BookPublication entity. Firstly we add a new file attribute which is a many-to-one ASSOCIATION to FileDescriptor entity. FileDescriptor is the descriptor of the uploaded file (not to be confused with java.io.FileDescriptor) that enables referencing the file from the data model objects.

book publication new attribute
Figure 5. New BookPublication Attribute

Save the changes and append the new attribute to the existing bookPublication.full view. Then, add the File attribute to the BookPublication browse and edit screens. To do this, put the cursor to the line containing the attribute and press Alt+Enter. Select Add entity attribute to screens and in the appeared dialog select screens that you want the new attribute to be added.

Generate new DB scripts, update the database and restart the application server. If DB is recreated, full-text search becomes disabled by default. Check the Value checkbox again in JMX Console, reindex all files, process indexing queue, log out and log in back.

As far as we have added the new attribute, the table of publications on BookPublication browser screen now contains one more column: File. To fill it in, open any line for editing, upload a text file using the new upload field and click OK. By default, CUBA supports RTF, TXT, DOC, DOCX, XLS, XSLX, ODT, ODS, and PDF file formats.

book publication file is not
Figure 6. BookPublication Editor

New files appeared in the table. The appearance of the new column can be adjusted.

book publication files uploaded
Figure 7. BookPublication Browser

Open the JMX Console screen, open the app-core.fts:type=FtsManager JMX bean and invoke sequentially reindexAll() and processQueue() to re-index the existing instances in the database and files according to the new search configuration. All new and changed data will be indexed automatically with a delay depending on the scheduled task interval, i.e. not longer than 30 seconds.

As a result, Full-text search will now output all the entries including external files contents.

book publication fts result
Figure 8. Search Result

You can find more information on FileStorageAPI and FileDescriptor in corresponding chapters of the main manual.