php 편집기 Baicao는 Hibernate Search 6을 사용하여 Elasticsearch에서 인덱스 엔터티의 모든 필드를 검색하는 방법을 소개합니다. Hibernate Search 6은 Elasticsearch와 완벽하게 통합되는 강력한 전체 텍스트 검색 엔진입니다. Hibernate Search 6을 구성하고 사용하면 엔터티의 모든 필드를 Elasticsearch로 쉽게 인덱싱하고 효율적인 전체 텍스트 검색 기능을 구현할 수 있습니다. 이 기사에서는 이 목표를 달성하기 위해 Hibernate Search 6을 구성하고 사용하는 방법에 대한 세부 정보를 제공합니다. 이 기사의 단계를 따르면 강력한 전체 텍스트 검색 엔진을 신속하게 구축하고 애플리케이션의 검색 기능을 향상시킬 수 있습니다.
hibernate search api를 이용하여 elasticsearch에서 검색하는 방법은 다음과 같습니다. 필드(addresses.address_key)에 언급된 대로 Address.address_key에서 검색되는 "addresses.address_key:123"으로 쿼리 문자열 값을 전달하고 있습니다.
이 메서드가 쿼리 문자열의 모든 입력을 허용하도록 만드는 방법(예: first_name:john) 모든 전체 텍스트 필드에서 검색하도록 합니다.
elasticsearch 버전: 8.10 최대 절전 모드 검색 버전: 6.2.2
으아아아색인된 엔터티 클래스:
public page<employee> searchemployee(string querystring) { try { searchsession searchsession = search.session(entitymanager); searchresult<employee> searchresult = searchsession.search(employee.class) .extension(elasticsearchextension.get()) .where(f -> f.simplequerystring().fields("addresses.address_key").matching(querystring)) .fetch(math.tointexact(page.getoffset()), page.getpagesize()); page<employee> pageresult = new pageimpl<>(searchresult.hits(), page, searchresult.total().hitcount()); return pageresult; } catch (searchexception pe) { throw pe; } }
조건자를 정의할 때 명시적으로 여러 필드를 대상으로 지정 할 수 있습니다.
으아아아현재 "모든 텍스트 필드"만 타겟팅하는 옵션은 없습니다. https://www.php.cn/link/0b36451530d9491114523d4b66253837을 참조하세요.
또한 명확하게 말하면 간단한 쿼리 문자열 구문은 쿼리 문자열의 필드에 대한 명시적 참조를 지원하지 않습니다.
이 예에서는:
으아아아...검색 문자열의 "addresses.address_key:" 접두어("addresses.address_key:123")는 특별한 의미가 없으며 문서에 있는 용어로만 해석됩니다.
다음과 같이 쓸 수도 있습니다:
으아아아하지만 실제로 당신이 원하는 것은 이것이라고 생각합니다:
으아아아위 내용은 hibernateSearch 6을 사용하여 ElasticSeacrch에서 색인화된 엔터티의 모든 필드를 검색하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!