Spring-boot为初始Lucene索引创建了休眠搜索类

时间:2019-04-22 22:15:07

标签: java spring hibernate spring-boot

在带有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();
    }
  }
}

但是在堆栈上没有迹象表明发生了索引编制,并且也没有在文件系统上创建索引路径的踪迹。

如何修改我的代码以正确触发该索引,我希望在哪里看到创建的路径和文件?

0 个答案:

没有答案