我有一个数字图书馆系统,在其中存储元数据和数据库中物理文件的路径。文件可以是任何东西:纯文本,Word,PDF,MP3,JPEG,MP4 ...
如何为域对象和物理文件(或文件的某些文本提取)提供全文搜索。
我是将文档文本存储在域对象中的唯一选择吗?我确实需要能够检索域对象列表,而不管搜索结果是来自域对象还是物理文档。当然可以使用文件路径进行连接,而实际上我将每个文档都放在由GUID命名的文件夹中,因此连接就在那里。
我需要在Grails中执行此操作,理想情况下是使用solr或可搜索的插件,但是Java解决方案会有所帮助。
最佳答案
您无需将内容存储在域对象中,只需在创建索引条目时将内容与域对象相关联即可。我使用Apache POI提取了我的内容,但是还有更高层次的服务,例如Apache Tika
您可以直接使用Lucene在Java中进行编码,但我建议改为SOLR
基于grails searchable plugin的Compass,这是基于Lucene的