gpt4 book ai didi

java - Hibernate搜索lucene消耗数据库连接

转载 作者:行者123 更新时间:2023-12-02 10:47:25 25 4
gpt4 key购买 nike

我已为 c3p0 池配置 maxPoolSize 10。最小池大小为 3。每当我启动服务器并执行 mysql 数据库的 show processlist 时,就会建立三个连接。除非服务器有巨大的流量,否则这将仅保留三个。这很好。

我已经实现了首次开始索引的搜索功能。当应用程序进行搜索并且当我检查数据库的显示进程列表时,所有数据库连接现在都打开。我看到 10 个连接全部打开。这是可接受的行为吗?理想情况下,我想说使用打开 2 或 3 个连接就可以了。为什么 hibernate lucene 使用很多连接?我可以在某处配置 lucene 的最大连接数吗?

我在下面发布我的代码。

fullTextEntityManager.createIndexer().startAndWait(); 

该应用程序仅执行一次

    @Transactional
public List<E> searchRecord(String searchText) {

FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search.getFullTextEntityManager(em);

if (CREATE_INDEX.equals("START")) {
try {
log.info("creating indexes");
fullTextEntityManager.createIndexer().startAndWait();
CREATE_INDEX = "END";
} catch (InterruptedException e) {
log.info("error in creating indexes", e);
}
}
log.info("lucene query builder");
QueryBuilder qb = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(getEntityClass())
.get();
// org.apache.lucene.search.Query luceneQuery =
// qb.keyword().onFields("name")
// .matching(searchText).createQuery();
if(searchText.contains(" ")){
String[] splittedText = searchText.split(" ");
searchText = splittedText[0];
}
org.apache.lucene.search.Query luceneQuery = qb.keyword().wildcard().onField(getSearchField())
.matching(searchText.toLowerCase() + '*').createQuery();

javax.persistence.Query jpaQuery = fullTextEntityManager.createFullTextQuery(luceneQuery, getEntityClass());

List<E> result = jpaQuery.getResultList();
return result;
}

最佳答案

质量索引器的目的是处理整个数据库(或者至少是应由 Hibernate Search 索引的部分)以重建索引。正如您所期望的,这是一个资源高度密集的过程,需要大量的数据库访问,并行执行这些访问可以显着加快该过程。这就是它使用许多连接的原因;默认情况下它使用 7 个连接。

现在,如果您希望质量索引器使用更少的连接,您可以简单地要求质量索引器使用更少的线程:

fullTextEntityManager.createIndexer()
.threadsToLoadObjects(2)
.startAndWait();

上面将仅使用 3 个线程:2 个用于从数据库加载实体,1 个用于将文档推送到索引。不过,显然重新索引会更慢。

参见this section of the documentation有关此主题的更多信息。

关于java - Hibernate搜索lucene消耗数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52446197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com