在带有hibernate-search-orm(5.11.1)的spring boot(2.0.6)项目中,我试图创建一个类来触发数据库中已经存在的数据的初始Lucene索引。 (Tutorial Here but doesn't cover how to setup the class)
我在代码上尝试了各种批注,并尝试了各种尝试以使其产生索引,但是我当前的代码看起来像这样(from SO answer here):
@Service
public class HibernateSearchService {
private final EntityManager entityManager;
@Autowired
public HibernateSearchService(final EntityManagerFactory entityManagerFactory) {
this.entityManager = entityManagerFactory.createEntityManager();
}
@PostConstruct
public void initialiseHibernateSearch() {
System.out.println("About to initalise search");
try {
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
fullTextEntityManager.createIndexer().startAndWait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我的application.properties文件包含以下配置:
hibernate.search.default.directory_provider = filesystem
hibernate.search.default.indexBase = /data/index/default
问题:/ data / index / default是相对于项目根目录还是驱动器根目录?
stacktrace的输出确实指示正在建立索引:
[ntifierloader-1] o.h.s.b.i.SimpleIndexingProgressMonitor : HSEARCH000027: Going to reindex 4 entities
[ restartedMain] o.h.s.b.i.SimpleIndexingProgressMonitor : HSEARCH000028: Reindexed 4 entities
但是,在驱动器的根级别或项目根目录上都没有/ data / index / default的踪迹。
我也尝试过以下代码:
@Transactional
public class HibernateSearchService {
EntityManager entityManager;
@PostConstruct
public void initialiseHibernateSearch() {
System.out.println("About to initalise search");
try {
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
fullTextEntityManager.createIndexer().startAndWait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
但是在堆栈上没有迹象表明发生了索引编制,并且也没有在文件系统上创建索引路径的踪迹。
如何修改我的代码以正确触发该索引,我希望在哪里看到创建的路径和文件?