protected void searchByTerm(SearchResult searchResult, String searchTerm, QueryKey queryKey, int maxSearchResults) {
int currentCount = 0;
int firstResult = queryKey == null ? 0 : queryKey.getFirstResult();
boolean emptyIndex = false;
while (currentCount < maxSearchResults && !emptyIndex) {
List<EntityInfo> indexResult = luceneSearcher.searchAllField(searchTerm, firstResult, maxSearchResults);
if (!indexResult.isEmpty()) {
databaseDataLoader.mergeSearchData(searchResult, indexResult, false, (entityId, entityInfo) -> {
searchResult.addHit(entityId, entityInfo.getEntityName(), entityInfo.getText(),
createNormalizer());
searchResult.getQueryKey().addId(entityId, entityInfo.getEntityName(), entityInfo.getText());
});
currentCount = Math.max(searchResult.getCount(), searchResult.getIdsCount());
firstResult += maxSearchResults;
searchResult.getQueryKey().setFirstResult(firstResult);
} else {
emptyIndex = true;
}
}
}