gpt4 book ai didi

java - JBoss 7.1.1 Final、Weld 和 Seam 3 上的 Hibernate Search

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:31 26 4
gpt4 key购买 nike

我正在运行一个应用程序,该应用程序使用 hibernate 搜索来查找系统中的人员。我在 JBoss AS 7.1.1 上运行它,应用程序基于 Seam 3、Weld 和 JSF 2.1。它工作顺利,但在一些更高的负载后,事实证明使用 FullTextEntityManager 的页面加载速度非常慢。在某些时候,整个应用程序都在变慢。

所以我想到也许我没有正确使用 Hibernate 搜索。我正在使用启动单例来索引数据库:

@Singleton
@Startup
public class Initializer implements Serializable {

private static final long serialVersionUID = 1L;

@PersistenceContext
private EntityManager entityManager;

@PostConstruct
public void startup() throws Exception {
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
fullTextEntityManager.createIndexer().startAndWait();
}

}

然后我在 PrimeFaces 的自动完成组件中使用的方法中使用 FullTextEntityManager:

@Session Scoped
public class ... {

private QueryBuilder queryBuilder;

@Inject
private EntityManager entityManager;

@PostConstruct
public void initFulltext() {
fullTextEntityManager = org.hibernate.search.jpa.Search.getFullTextEntityManager(entityManager);
queryBuilder = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Person.class).get();

}

@Override
@SuppressWarnings("unchecked")
public List<Person> autocomplete(Object event) throws Exception {
if (event.toString() != null && !event.toString().trim().isEmpty()) {
org.apache.lucene.search.Query query = queryBuilder.keyword()
.onFields("username", "firstname", "lastname").matching(event.toString())
.createQuery();

FullTextQuery persistenceQuery = fullTextEntityManager.createFullTextQuery(query, Person.class);
persistenceQuery.setMaxResults(MAX_RESULTS_ON_PAGE);

return persistenceQuery.getResultList();
}
return null;
}
}

这是 Hibernate Search 在 Java EE 应用程序中的正确用法吗?一段时间后, hibernate 搜索是否会尝试同步实体和 Lucene 索引的更改?如果是这样,是否有可能对性能造成巨大影响?

最佳答案

我会说这是 hibernate 搜索的正确用法。它的字段缓存正在降低您的性能。这实际上取决于查询。阅读第 5.5 节 here ,应该有点帮助。

关于java - JBoss 7.1.1 Final、Weld 和 Seam 3 上的 Hibernate Search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610370/

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