0
私はREST API、フロントエンドにはAngular 2、バックエンドにはSpringというWebサイトを作成しています。リクエストの結果を見ると、無限のスクロールがあります。そして、私は全文検索を使って自分の要求と一致するものを探しています。私の質問は、Hibernate Searchで分割されたリクエストを作成する方法です。可能であれば、コードの例をいくつか紹介してください。Hibernate Search Portionedされたリクエスト
私は全文検索に使用するコードの平和
@Repository
@Transactional
public class HibernateSearch {
@PersistenceContext
private EntityManager entityManager;
public List<Manual> fulltextSearching(String keyword){
if(keyword.equals("")) return Collections.emptyList();
FullTextEntityManager fullTextEntityManager =
org.hibernate.search.jpa.Search.getFullTextEntityManager(entityManager);
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(Manual.class).get();
javax.persistence.Query jpaQuery =
fullTextEntityManager.createFullTextQuery(createQuery(qb, keyword), Manual.class);
@SuppressWarnings("unchecked")
List<Manual> result = jpaQuery.getResultList();
return result;
}
private org.apache.lucene.search.Query createQuery(QueryBuilder qb, String keyword){
return qb
.keyword()
.onFields("name", "introduction", "user.username", "tags.name")
.matching(keyword)
.createQuery();
}
}
ありがとう、それは私のために働く –
2番目のページを取得するには、新しい 'FullTextQuery'を作成する必要がありますか、' jpaQuery'オブジェクトを再利用できますか? – nuoritoveri
@nuoritoveri EntityManagerが開いている限り、クエリを再利用できます。 –