Package ca.uhn.fhir.jpa.dao
Class FulltextSearchSvcImpl
java.lang.Object
ca.uhn.fhir.jpa.dao.FulltextSearchSvcImpl
- All Implemented Interfaces:
IFulltextSearchSvc
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
canUseHibernateSearch
(String theResourceType, SearchParameterMap myParams) Returns true if the parameter map can be handled for hibernate search.long
count
(String theResourceName, SearchParameterMap theParams) Returns accurate hit countvoid
deleteIndexedDocumentsByTypeAndId
(Class theClazz, List<Object> theGivenIds) Given a resource type that is indexed by hibernate search, and a list of objects reprenting the IDs you wish to delete, this method will delete the resources from the Hibernate Search index.List
<ca.uhn.fhir.rest.api.server.storage.IResourcePersistentId> everything
(String theResourceName, SearchParameterMap theParams, ca.uhn.fhir.rest.api.server.storage.IResourcePersistentId theReferencingPid, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) extractLuceneIndexData
(org.hl7.fhir.instance.model.api.IBaseResource theResource, ResourceIndexedSearchParams theNewParams) List
<org.hl7.fhir.instance.model.api.IBaseResource> getResources
(Collection<Long> thePids) Returns inlined resource stored along with index mappings for matched identifiersboolean
List
<ca.uhn.fhir.rest.api.server.storage.IResourcePersistentId> lastN
(SearchParameterMap theParams, Integer theMaximumResults) void
reindex
(ResourceTable theEntity) Re-publish the resource to the full-text index.List
<ca.uhn.fhir.rest.api.server.storage.IResourcePersistentId> search
(String theResourceName, SearchParameterMap theParams, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) Search the Lucene/Elastic index for pids using params supported in theParams, consuming entries from theParams when used to query.List
<org.hl7.fhir.instance.model.api.IBaseResource> searchForResources
(String theResourceType, SearchParameterMap theParams, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) searchNotScrolled
(String theResourceName, SearchParameterMap theParams, Integer theMaxResultsToFetch, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) Query the index for a plain list (non-scrollable) iterator of results.searchScrolled
(String theResourceType, SearchParameterMap theParams, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) Query the index for a complete iterator of ALL results.boolean
supportsAllOf
(SearchParameterMap theParams) boolean
supportsAllSortTerms
(String theResourceType, SearchParameterMap theParams) Given a resource type and aSearchParameterMap
, return true only if all sort terms are supported.org.hl7.fhir.instance.model.api.IBaseResource
Autocomplete search for NIH $expand contextDirection=existing
-
Constructor Details
-
FulltextSearchSvcImpl
public FulltextSearchSvcImpl()Constructor
-
-
Method Details
-
extractLuceneIndexData
public ExtendedHSearchIndexData extractLuceneIndexData(org.hl7.fhir.instance.model.api.IBaseResource theResource, ResourceIndexedSearchParams theNewParams) - Specified by:
extractLuceneIndexData
in interfaceIFulltextSearchSvc
-
canUseHibernateSearch
Description copied from interface:IFulltextSearchSvc
Returns true if the parameter map can be handled for hibernate search. We have to filter out any queries that might use search params we only know how to handle in JPA. - SeeExtendedHSearchSearchBuilder.addAndConsumeAdvancedQueryClauses(ca.uhn.fhir.jpa.dao.search.ExtendedHSearchClauseBuilder, ca.uhn.fhir.jpa.model.search.ExtendedHSearchBuilderConsumeAdvancedQueryClausesParams)
- Specified by:
canUseHibernateSearch
in interfaceIFulltextSearchSvc
-
reindex
Description copied from interface:IFulltextSearchSvc
Re-publish the resource to the full-text index. - During update, hibernate search only republishes the entity if it has changed. During $reindex, we want to force the re-index.- Specified by:
reindex
in interfaceIFulltextSearchSvc
- Parameters:
theEntity
- the fully populated ResourceTable entity
-
searchNotScrolled
public ISearchQueryExecutor searchNotScrolled(String theResourceName, SearchParameterMap theParams, Integer theMaxResultsToFetch, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) Description copied from interface:IFulltextSearchSvc
Query the index for a plain list (non-scrollable) iterator of results.- Specified by:
searchNotScrolled
in interfaceIFulltextSearchSvc
- Parameters:
theResourceName
- e.g. PatienttheParams
- The search querytheMaxResultsToFetch
- maximum results to fetchtheRequestDetails
- The request details- Returns:
- Iterator of result PIDs
-
searchScrolled
@Transactional public ISearchQueryExecutor searchScrolled(String theResourceType, SearchParameterMap theParams, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) Description copied from interface:IFulltextSearchSvc
Query the index for a complete iterator of ALL results. (scrollable search result).- Specified by:
searchScrolled
in interfaceIFulltextSearchSvc
- Parameters:
theResourceType
- e.g. PatienttheParams
- The search querytheRequestDetails
- The request details- Returns:
- Iterator of result PIDs
-
everything
public List<ca.uhn.fhir.rest.api.server.storage.IResourcePersistentId> everything(String theResourceName, SearchParameterMap theParams, ca.uhn.fhir.rest.api.server.storage.IResourcePersistentId theReferencingPid, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) - Specified by:
everything
in interfaceIFulltextSearchSvc
-
isDisabled
- Specified by:
isDisabled
in interfaceIFulltextSearchSvc
-
search
@Transactional public List<ca.uhn.fhir.rest.api.server.storage.IResourcePersistentId> search(String theResourceName, SearchParameterMap theParams, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) Description copied from interface:IFulltextSearchSvc
Search the Lucene/Elastic index for pids using params supported in theParams, consuming entries from theParams when used to query.- Specified by:
search
in interfaceIFulltextSearchSvc
- Parameters:
theResourceName
- the resource name to restrict the query.theParams
- the full query - modified to return only params unused by the index.theRequestDetails
- The request details- Returns:
- the pid list for the matchign resources.
-
tokenAutocompleteValueSetSearch
@Transactional public org.hl7.fhir.instance.model.api.IBaseResource tokenAutocompleteValueSetSearch(ValueSetAutocompleteOptions theOptions) Description copied from interface:IFulltextSearchSvc
Autocomplete search for NIH $expand contextDirection=existing- Specified by:
tokenAutocompleteValueSetSearch
in interfaceIFulltextSearchSvc
- Parameters:
theOptions
- operation options- Returns:
- a ValueSet with the search hits as the expansion.
-
lastN
public List<ca.uhn.fhir.rest.api.server.storage.IResourcePersistentId> lastN(SearchParameterMap theParams, Integer theMaximumResults) - Specified by:
lastN
in interfaceIFulltextSearchSvc
-
getResources
Description copied from interface:IFulltextSearchSvc
Returns inlined resource stored along with index mappings for matched identifiers- Specified by:
getResources
in interfaceIFulltextSearchSvc
- Parameters:
thePids
- raw pids - we dont support versioned references- Returns:
- Resources list or empty if nothing found
-
count
Description copied from interface:IFulltextSearchSvc
Returns accurate hit count- Specified by:
count
in interfaceIFulltextSearchSvc
-
searchForResources
@Transactional(readOnly=true) public List<org.hl7.fhir.instance.model.api.IBaseResource> searchForResources(String theResourceType, SearchParameterMap theParams, ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails) - Specified by:
searchForResources
in interfaceIFulltextSearchSvc
-
supportsAllOf
- Specified by:
supportsAllOf
in interfaceIFulltextSearchSvc
-
supportsAllSortTerms
Description copied from interface:IFulltextSearchSvc
Given a resource type and aSearchParameterMap
, return true only if all sort terms are supported.- Specified by:
supportsAllSortTerms
in interfaceIFulltextSearchSvc
- Parameters:
theResourceType
- The resource type for the query.theParams
- TheSearchParameterMap
being searched with.- Returns:
- true if all sort terms are supported, false otherwise.
-
deleteIndexedDocumentsByTypeAndId
Description copied from interface:IFulltextSearchSvc
Given a resource type that is indexed by hibernate search, and a list of objects reprenting the IDs you wish to delete, this method will delete the resources from the Hibernate Search index. This is useful for situations where a deletion occurred outside a Hibernate ORM session, leaving dangling documents in the index.- Specified by:
deleteIndexedDocumentsByTypeAndId
in interfaceIFulltextSearchSvc
- Parameters:
theClazz
- The class, which must be annotated withIndexed
theGivenIds
- The list of IDs for the given document type. Note that while this is a List
-